Ejemplo n.º 1
0
        public void BasicTest()
        {
            var ast1 = new IdListNode(1, new IdNode(1, "x"), new IdNode(1, "y"));
            var ast2 = new IdListNode(1, new IdNode(1, "X"), new IdNode(1, "y"));

            Assert.That(ast1.Substitute(new IdNode(2, "x"), new IdNode(2, "X")), Is.EqualTo(ast2));
        }
Ejemplo n.º 2
0
        public void SubstituteKeepsOriginalTest()
        {
            ASTNode ast1 = new IdListNode(1, new IdNode(1, "x"), new IdNode(1, "y"));
            ASTNode ast2 = new IdListNode(1, new IdNode(1, "X"), new IdNode(1, "y"));

            Assert.That(ast1.Substitute(new IdNode(2, "x"), new IdNode(2, "X")), Is.EqualTo(ast2));
            Assert.That(ast1, Is.EqualTo(new IdListNode(1, new IdNode(1, "x"), new IdNode(1, "y"))));
        }
Ejemplo n.º 3
0
 public void Visit(IdListNode node)
 {
     if (!isFirstEncounter)
     {
         foreach (var subnode in node)
         {
             var variableName = subnode.AnchorToken.Lexeme;
             if (localScopeSymbolTable.Contains(variableName))
             {
                 throw new SemanticError("Duplicated variable declaration: " + variableName, node[0].AnchorToken);
             }
             else
             {
                 localScopeSymbolTable.Add(variableName);
             }
             foreach (var subnode_of_subnode /* owo */ in subnode)
             {
                 Visit((dynamic)subnode_of_subnode);
             }
         }
     }
 }
Ejemplo n.º 4
0
        public Node IdList()
        {
            var node = new IdListNode();

            if (CurrentToken == TokenCategory.PARENTHESIS_CLOSE)
            {
                return(node);
            }
            node.Add(new IdentifierNode()
            {
                AnchorToken = Expect(TokenCategory.IDENTIFIER)
            });
            while (CurrentToken == TokenCategory.COMMA)
            {
                Expect(TokenCategory.COMMA);
                node.Add(new IdentifierNode()
                {
                    AnchorToken = Expect(TokenCategory.IDENTIFIER)
                });
            }
            return(node);
        }
Ejemplo n.º 5
0
 public virtual TResult Visit(IdListNode node) => this.VisitChildren(node);
 public override void CollectDataFromChildren() => IdListNode = FindFirstChildNodeByType <IdListNode>();