public override void Visit(ExpressionNode node)
 {
     SymbolTable.SetCurrentNode(node);
     foreach (var Exp in node.ExpressionParts)
     {
         Exp.Accept(this);
     }
     HandleExpressionTypes(node);
 }
 private void GenerateAssert(Exp test)
 {
     gen.SideEffect(
         gen.Appl(
             gen.MethodRef(
                 gen.TypeRefExpr("Debug"),
                 "Assert"),
             test.Accept(xlat)));
     gen.EnsureImport("System.Diagnostics");
 }
示例#3
0
 private void GenerateAssert(Exp test)
 {
     gen.SideEffect(
         gen.Appl(
             new CodeMethodReferenceExpression(
                 new CodeTypeReferenceExpression("Debug"),
                 "Assert"),
             test.Accept(xlat)));
     gen.EnsureImport("System.Diagnostics");
 }
示例#4
0
        private CodeExpression TranslateFormatExpression(Exp formatString, Exp pyArgs)
        {
            var args = new List <CodeExpression>();

            args.Add(formatString.Accept(this));

            if (pyArgs is PyTuple tuple)
            {
                args.AddRange(tuple.values
                              .Select(e => e.Accept(this)));
            }
            else
            {
                args.Add(pyArgs.Accept(this));
            }
            m.EnsureImport("System");
            return(m.Appl(
                       m.MethodRef(
                           m.TypeRefExpr("String"),
                           "Format"),
                       args.ToArray()));
        }
示例#5
0
        private CodeExpression TranslateFormatExpression(Exp formatString, Exp pyArgs)
        {
            var args = new List <CodeExpression>();

            args.Add(formatString.Accept(this));

            var tuple = pyArgs as PyTuple;

            if (tuple != null)
            {
                args.AddRange(tuple.values
                              .Select(e => e.Accept(this)));
            }
            else
            {
                args.Add(pyArgs.Accept(this));
            }
            m.EnsureImport("System");
            return(m.Appl(
                       new CodeMethodReferenceExpression(
                           new CodeTypeReferenceExpression("String"),
                           "Format"),
                       args.ToArray()));
        }
示例#6
0
 public static DataType TransformExp(Analyzer analyzer, Exp n, State s)
 {
     return(n.Accept(new TypeTransformer(s, analyzer)));
 }
示例#7
0
 private void GenerateAssert(Exp test)
 {
     gen.SideEffect(
         gen.Appl(
             new CodeMethodReferenceExpression(
                 new CodeTypeReferenceExpression("Debug"),
                 "Assert"),
             test.Accept(xlat)));
     gen.EnsureImport("System.Diagnostics");
 }
示例#8
0
文件: State.cs 项目: uxmal/pytocs
 public static DataType transformExpr(Analyzer analyzer, Exp n, State s)
 {
     return n.Accept(new TypeTransformer(s, analyzer));
 }