コード例 #1
0
 public override void Traverse(ISyntaxTreeVisitor visitor)
 {
     visitor.Visit(this);
     visitor.Start(this);
     base.Traverse(visitor);
     visitor.Finish(this);
 }
コード例 #2
0
ファイル: ISyntaxTreeVisitor.cs プロジェクト: acaly/FastLua
 public static void Traverse <T>(this List <T> nodes, ISyntaxTreeVisitor visitor)
     where T : SyntaxNode
 {
     foreach (var n in nodes)
     {
         n?.Traverse(visitor);
     }
 }
コード例 #3
0
 public ConversionTestCase(string name, string description, ISyntaxTreeVisitor syntaxTreeVisitor, CodeWriter codeWriter, string testDirectory)
 {
     Name              = name;
     Description       = description;
     SyntaxTreeVisitor = syntaxTreeVisitor;
     CodeWriter        = codeWriter;
     TestDirectory     = testDirectory;
 }
コード例 #4
0
 public override void Traverse(ISyntaxTreeVisitor visitor)
 {
     visitor.Visit(this);
     visitor.Start(this);
     base.Traverse(visitor);
     Variable.Traverse(visitor);
     From.Traverse(visitor);
     To.Traverse(visitor);
     Step?.Traverse(visitor);
     visitor.Finish(this);
 }
コード例 #5
0
        public CsvNode Parse(String input, ISyntaxTreeVisitor <CsvNode, IParseTree> treeVisitor)
        {
            Assume.NotNull(input, nameof(input));
            Assume.NotNull(treeVisitor, nameof(treeVisitor));

            var          stream = new AntlrInputStream(input);
            ITokenSource lexer  = new CsvLexer(stream);
            ITokenStream tokens = new CommonTokenStream(lexer);
            var          parser = new CsvParser(tokens)
            {
                BuildParseTree = true
            };

            var tree = parser.start();

            return(treeVisitor.Visit(input, tree));
        }
コード例 #6
0
        public Node Parse <TResult>(String input, ISyntaxTreeVisitor <TResult, IParseTree> treeVisitor, IHasSyntaxTree treeFactory)
        {
            Assume.NotNull(input, nameof(input));
            Assume.NotNull(treeVisitor, nameof(treeVisitor));
            Assume.NotNull(treeFactory, nameof(treeFactory));

            var          stream = new AntlrInputStream(input);
            ITokenSource lexer  = new CsvLexer(stream);
            ITokenStream tokens = new CommonTokenStream(lexer);
            var          parser = new CsvParser(tokens)
            {
                BuildParseTree = true
            };

            var tree = parser.start();

            treeVisitor.Visit(input, tree);

            return(treeFactory.GetSyntaxTree().Safe(syntaxTree => syntaxTree.Root));
        }
コード例 #7
0
        static Fixture()
        {
            SyntaxTreeVisitors = new ISyntaxTreeVisitor[]
            {
                new PowerShellSyntaxTreeVisitor(),
                new CSharpSyntaxTreeVisitor()
            };

            CodeWriters = new CodeWriter[]
            {
                new PowerShellCodeWriter(),
                new CSharpCodeWriter()
            };

            _data = new List <object[]>();

            foreach (var syntaxTreeVisitor in SyntaxTreeVisitors)
            {
                foreach (var codeWriter in CodeWriters)
                {
                    if (syntaxTreeVisitor.Language == codeWriter.Language)
                    {
                        continue;
                    }

                    var sourceLanguage = Enum.GetName(typeof(Language), syntaxTreeVisitor.Language);
                    var targetLanguage = Enum.GetName(typeof(Language), codeWriter.Language);

                    var testDirectory = Fixture.GetTestDirectory();
                    testDirectory = Path.Combine(Path.Combine(testDirectory, "Languages"), sourceLanguage + "To" + targetLanguage);
                    var testManifestFile    = Path.Combine(testDirectory, "tests.json");
                    var testManifestContent = File.ReadAllText(testManifestFile);
                    var testManifest        = JsonConvert.DeserializeObject <TestManifest>(testManifestContent);

                    foreach (var testCase in testManifest.TestCases)
                    {
                        _data.Add(new[] { new ConversionTestCase(testCase.Name, testCase.Description, testCase.Category, syntaxTreeVisitor, codeWriter, testDirectory) });
                    }
                }
            }
        }
コード例 #8
0
ファイル: SyntaxTree.cs プロジェクト: tstune/designpattern
 /// <summary>
 /// Accept method for the visitor
 /// </summary>
 /// <param name="visitor">The visitor</param>
 public override void Accept(ISyntaxTreeVisitor visitor)
 {
     visitor.Visit(this);
 }
コード例 #9
0
ファイル: Statement.cs プロジェクト: tstune/designpattern
 /// <summary>
 /// Accept method for the visitor
 /// </summary>
 /// <param name="visitor">The visitor</param>
 public abstract void Accept(ISyntaxTreeVisitor visitor);
コード例 #10
0
 public ExpressionChildrenVisitor(ISyntaxTreeVisitor?preOrderVisitor, ISyntaxTreeVisitor?postOrderVisitor, ISyntaxTreeVisitor childrenVisitor)
 {
     _preOrderVisitor  = preOrderVisitor;
     _postOrderVisitor = postOrderVisitor;
     _childrenVisitor  = childrenVisitor;
 }
コード例 #11
0
 public void Accept(ISyntaxTreeVisitor visitor)
 {
     visitor.VisitSyntaxTree(this);
 }
コード例 #12
0
ファイル: StatementNode.cs プロジェクト: sfuller/MonC
 public void AcceptSyntaxTreeVisitor(ISyntaxTreeVisitor visitor)
 {
     visitor.VisitStatement(this);
 }
コード例 #13
0
 public StatementChildrenVisitor(ISyntaxTreeVisitor visitor, ISyntaxTreeVisitor childrenVisitor)
 {
     _visitor         = visitor;
     _childrenVisitor = childrenVisitor;
 }
コード例 #14
0
 public void AcceptSyntaxTreeVisitor(ISyntaxTreeVisitor visitor)
 {
     visitor.VisitSpecifier(this);
 }
コード例 #15
0
 /// <summary>
 /// Accept method for the visitor
 /// </summary>
 /// <param name="visitor">The visitor</param>
 public override void Accept(ISyntaxTreeVisitor visitor)
 {
     visitor.Visit(this);
 }
コード例 #16
0
 public void AcceptSyntaxTreeVisitor(ISyntaxTreeVisitor visitor)
 {
     visitor.VisitStructFunctionAssociation(this);
 }
コード例 #17
0
 public void AcceptSyntaxTreeVisitor(ISyntaxTreeVisitor visitor)
 {
     visitor.VisitUnknown(this);
 }
コード例 #18
0
 public ParseTreeChildrenVisitor(ISyntaxTreeVisitor?preOrderVisitor, ISyntaxTreeVisitor?postOrderVisitor, ISyntaxTreeVisitor childVisitor)
 {
     _preOrderVisitor  = preOrderVisitor;
     _postOrderVisitor = postOrderVisitor;
     _childVisitor     = childVisitor;
 }
コード例 #19
0
ファイル: UnaryOperationNode.cs プロジェクト: sfuller/MonC
 public void AcceptSyntaxTreeVisitor(ISyntaxTreeVisitor visitor)
 {
     visitor.VisitExpression(this);
 }
コード例 #20
0
ファイル: EnumDeclarationNode.cs プロジェクト: sfuller/MonC
 public void AcceptSyntaxTreeVisitor(ISyntaxTreeVisitor visitor)
 {
     visitor.VisitEnumDeclaration(this);
 }
コード例 #21
0
 /// <summary>
 /// Accept method for the visitor
 /// </summary>
 /// <param name="visitor">The visitor</param>
 public abstract void Accept(ISyntaxTreeVisitor visitor);