Exemplo n.º 1
0
 public Node List()
 {
     var list_node = new ListLiteralNode();
     Expect(TokenCategory.CURLY_OPEN);
     var nodes = Optional(simpleLiterals, () =>
                 {
                     list_node.Add(Node.fromToken(Expect(simpleLiterals)));
                     return ZeroOrMore(TokenCategory.COMMA, SimpleLiteral, true);
                 });
     list_node.Add(nodes);
     Expect(TokenCategory.CURLY_CLOSE);
     return list_node;
 }
Exemplo n.º 2
0
        public Node List()
        {
            var listLiteral = new ListLiteralNode();

            if (CurrentToken == TokenCategory.KEY_OPEN)
            {
                Expect(TokenCategory.KEY_OPEN);
                var litList = SimpleLiteral();
                while (CurrentToken == TokenCategory.COMMA)
                {
                    var commaNode = new Identifier()
                    {
                        AnchorToken = Expect(TokenCategory.COMMA)
                    };
                    commaNode.Add(litList);
                    commaNode.Add(SimpleLiteral());

                    litList = commaNode;
                }
                listLiteral.Add(litList);
                Expect(TokenCategory.KEY_CLOSE);
            }
            if (CurrentToken == TokenCategory.BRACKETS_OPEN)
            {
                Expect(TokenCategory.BRACKETS_OPEN);
                if (CurrentToken != TokenCategory.IDENTIFIER)
                {
                    var litList = SimpleLiteral();
                    while (CurrentToken == TokenCategory.COMMA)
                    {
                        var commaNode = new Identifier()
                        {
                            AnchorToken = Expect(TokenCategory.COMMA)
                        };
                        commaNode.Add(litList);
                        commaNode.Add(SimpleLiteral());

                        litList = commaNode;
                    }
                    listLiteral.Add(litList);
                }
                else
                {
                    var expList = Expression();
                    while (CurrentToken == TokenCategory.COMMA)
                    {
                        var commaNode = new Identifier()
                        {
                            AnchorToken = Expect(TokenCategory.COMMA)
                        };
                        commaNode.Add(expList);
                        commaNode.Add(Expression());

                        expList = commaNode;
                    }
                    listLiteral.Add(expList);
                }

                Expect(TokenCategory.BRACKETS_CLOSE);
            }

            return(listLiteral);
        }