コード例 #1
0
ファイル: Program.cs プロジェクト: YuHuiCheng/GPLexTutorial
        static void TestAST()
        {
            var program = new AST.CompilationUnit(new List <AST.Declaration> {
                new AST.ClassDeclaration(
                    new List <AST.Modifier> {
                    AST.Modifier.Public
                },
                    ("Helloworld"),
                    new List <AST.Declaration> {
                    new AST.MethodDeclaration(
                        new List <AST.Modifier> {
                        AST.Modifier.Public, AST.Modifier.Static
                    },
                        new AST.NamedType("void"),
                        "main",
                        new List <AST.FormalParameterDeclaration> {
                        new AST.FormalParameterDeclaration(
                            new AST.ArrayType(new AST.NamedType("String")),
                            "args"
                            )
                    },


                        new AST.Block(
                            new List <AST.Statement> {
                        new AST.VariableDeclarationStatement(new AST.PrimitiveType(AST.Primitive.Int), new List <AST.VariableDeclarator> {
                            new AST.VariableDeclarator("x", null)
                        }),
                        new AST.VariableDeclarationStatement(new AST.PrimitiveType(AST.Primitive.Int), new List <AST.VariableDeclarator> {
                            new AST.VariableDeclarator("y", null)
                        }),
                        new AST.ExpressionStatement(
                            new AST.AssignmentExpression(
                                new AST.IdentifierExpression("x"),
                                "=",
                                new AST.IntegerLiteralExpression(42)         //42 is changed to "42"

                                )
                            ),
                        new AST.ExpressionStatement(new AST.AssignmentExpression(new AST.IdentifierExpression("y"), "=", new AST.BinaryExpression(new AST.IdentifierExpression("x"), "+", new AST.IntegerLiteralExpression(1))))
                    }
                            )
                        )
                })
            }
                                                  );

            program.ResolveNames(null);
            program.DumpValue(0);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: YuHuiCheng/GPLexTutorial
        static void TestAST()
        {
            var program = new AST.CompilationUnit(
                /* Null is for PackageDec and ImportDec*/
                null,
                null,
                new List <AST.TypeDeclaration>
            {
                new AST.ClassDeclaration(

                    new List <AST.ClassModifier> {
                    AST.ClassModifier.Public
                },
                    "HelloWorld",
                    new List <AST.ClassBodyDeclaration>
                {
                    new AST.MethodDeclaration(
                        new List <AST.MethodModifier> {
                        AST.MethodModifier.Public, AST.MethodModifier.Static
                    },
                        new AST.MethodHeader(AST.Type.VOID,
                                             new AST.MethodDeclarator(
                                                 "main",
                                                 new List <AST.FormalParameter>
                    {
                        new AST.FormalParameter(
                            new AST.ArrayType(new AST.NamedType("String")), "args")
                    })),
                        new AST.MethodBody(
                            new List <AST.Statement>
                    {
                        new AST.LocalVariableDeclarationStatement(new AST.PrimitiveType(AST.Primitive.Int), "x"),

                        new AST.ExpressionStatement(
                            new AST.AssignmentExpression(
                                "x",
                                "=",
                                new AST.IntExpression("42")
                                )
                            )
                    }
                            )
                        )
                }
                    )
            }
                );

            program.DumpValue(0);
        }