Skip to content

Commit 66dbd9c

Browse files
committed
clean the code
1 parent 30d29a5 commit 66dbd9c

File tree

4 files changed

+20
-24
lines changed

4 files changed

+20
-24
lines changed

Src/PCompiler/CompilerCore/Backend/PChecker/PCheckerCodeGenerator.cs

+4-17
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ private void WriteDecl(CompilationContext context, StringWriter output, IPDecl d
255255
break;
256256

257257
case SafetyTest safety:
258-
WriteSafetyTestDecl(context, output, safety);
258+
ParamAssignment.IterateIndexDic(safety, _globalParams, indexDic => WriteSafetyTestDecl(context, output, safety, indexDic));
259259
break;
260260

261261
case Interface _:
@@ -344,19 +344,12 @@ private static void WriteForeignType(CompilationContext context, StringWriter ou
344344
var declName = foreignType.CanonicalRepresentation;
345345
context.WriteLine(output, $"// TODO: Implement the Foreign Type {declName}");
346346
}
347-
348-
private static string RenameSafetyTest(string name, IDictionary<string, IPExpr> indexDic)
349-
{
350-
var postfix = $"{string.Join("__", indexDic.ToList().Select(p => $"{p.Key}_{p.Value}"))}";
351-
return postfix.Length == 0 ? name : $"{name}___{postfix}";
352-
}
353347

354-
private void WriteSingleSafetyTestDecl(CompilationContext context, StringWriter output, SafetyTest safety, IDictionary<string, int> indexDic)
348+
private void WriteSafetyTestDecl(CompilationContext context, StringWriter output, SafetyTest safety, Dictionary<Variable, IPExpr> dic)
355349
{
356-
Console.WriteLine($"indexArr: {string.Join(',', indexDic.ToList())}");
350+
// Console.WriteLine($"dic: {string.Join(',', dic.ToList())}");
357351
WriteNameSpacePrologue(context, output);
358-
var dic = ParamAssignment.IndexDic2Dic(_globalParams, safety.ParamExprMap, indexDic);
359-
var name = RenameSafetyTest(context.Names.GetNameForDecl(safety), ParamAssignment.Dic2StrDic(dic));
352+
var name = ParamAssignment.RenameSafetyTestByAssignment(context.Names.GetNameForDecl(safety), dic);
360353
context.WriteLine(output, $"public class {name} {{");
361354
WriteInitializeGlobalParams(context, output, dic);
362355
WriteInitializeLinkMap(context, output, safety.ModExpr.ModuleInfo.LinkMap);
@@ -368,12 +361,6 @@ private void WriteSingleSafetyTestDecl(CompilationContext context, StringWriter
368361

369362
WriteNameSpaceEpilogue(context, output);
370363
}
371-
372-
373-
private void WriteSafetyTestDecl(CompilationContext context, StringWriter output, SafetyTest safety)
374-
{
375-
ParamAssignment.IterateIndexDic(safety, _globalParams, indexDic => WriteSingleSafetyTestDecl(context, output, safety, indexDic));
376-
}
377364

378365
private void WriteImplementationDecl(CompilationContext context, StringWriter output, Implementation impl)
379366
{

Src/PCompiler/CompilerCore/TypeChecker/AST/Declarations/SafetyTest.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
using System;
2-
using Antlr4.Runtime;
1+
using Antlr4.Runtime;
32
using System.Collections.Generic;
4-
using System.Linq;
53
using Plang.Compiler.TypeChecker.AST.Expressions;
64

75
namespace Plang.Compiler.TypeChecker.AST.Declarations

Src/PCompiler/CompilerCore/TypeChecker/AST/Declarations/Variable.cs

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ public Variable(string name, ParserRuleContext sourceNode, VariableRole role)
1818

1919
public string Name { get; }
2020
public ParserRuleContext SourceLocation { get; }
21+
22+
public override string ToString()
23+
{
24+
return this.Name;
25+
}
2126
}
2227

2328
[Flags]

Src/PCompiler/CompilerCore/TypeChecker/ParamAssignment.cs

+10-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Plang.Compiler.TypeChecker;
88

99
public abstract class ParamAssignment
1010
{
11-
public static Dictionary<string, IPExpr> Dic2StrDic(Dictionary<Variable, IPExpr> dic)
11+
private static Dictionary<string, IPExpr> Dic2StrDic(Dictionary<Variable, IPExpr> dic)
1212
{
1313
var dicAux = new Dictionary<string, IPExpr>();
1414
foreach (var (k, i) in dic)
@@ -18,7 +18,7 @@ public static Dictionary<string, IPExpr> Dic2StrDic(Dictionary<Variable, IPExpr>
1818
return dicAux;
1919
}
2020

21-
public static Dictionary<Variable, IPExpr> IndexDic2Dic(List<Variable> globalParams, IDictionary<string, List<IPExpr>> paramExprDic, IDictionary<string, int> indexDic)
21+
private static Dictionary<Variable, IPExpr> IndexDic2Dic(List<Variable> globalParams, IDictionary<string, List<IPExpr>> paramExprDic, IDictionary<string, int> indexDic)
2222
{
2323
var dic = new Dictionary<Variable, IPExpr>();
2424
foreach (var (k, i) in indexDic)
@@ -33,6 +33,12 @@ public static Dictionary<Variable, IPExpr> IndexDic2Dic(List<Variable> globalPar
3333
}
3434
return dic;
3535
}
36+
37+
public static string RenameSafetyTestByAssignment(string name, Dictionary<Variable, IPExpr> dic)
38+
{
39+
var postfix = $"{string.Join("__", Dic2StrDic(dic).ToList().Select(p => $"{p.Key}_{p.Value}"))}";
40+
return postfix.Length == 0 ? name : $"{name}___{postfix}";
41+
}
3642

3743
private static bool Next((string, int)[] indexArr, IDictionary<string, List<IPExpr>> globalParams)
3844
{
@@ -46,7 +52,7 @@ private static bool Next((string, int)[] indexArr, IDictionary<string, List<IPEx
4652
return false;
4753
}
4854

49-
public static void IterateIndexDic(SafetyTest safety, List<Variable> globalParams, Action<Dictionary<string, int>> f)
55+
public static void IterateIndexDic(SafetyTest safety, List<Variable> globalParams, Action<Dictionary<Variable, IPExpr>> f)
5056
{
5157
// Console.WriteLine($"safety.ParamExpr.Count = {safety.ParamExpr.Count}");
5258
var indexArr = safety.ParamExprMap.ToList().Zip(Enumerable.Repeat(0, safety.ParamExprMap.Count), (x, y) => (x.Key, y)).ToArray();
@@ -58,7 +64,7 @@ public static void IterateIndexDic(SafetyTest safety, List<Variable> globalParam
5864
// Console.WriteLine($"{string.Join(',', dic.ToList())} |- {safety.AssumeExpr} = {ForceBool(Eval(dic, safety.AssumeExpr))}");
5965
if (!SimpleExprEval.ForceBool(SimpleExprEval.Eval(dic, safety.AssumeExpr))) continue;
6066
// Console.WriteLine($"indexArr: {string.Join(',', indexArr)}");
61-
f(indexDic);
67+
f(dic);
6268
} while (Next(indexArr, safety.ParamExprMap));
6369
}
6470
}

0 commit comments

Comments
 (0)