Exemplo n.º 1
0
        public override INode <AstNode> VisitTerminal(Antlr4.Runtime.Tree.ITerminalNode node)
        {
            var payload = (CommonToken)node.Payload;

            var ruleType = payload.Type;
            var text     = payload.Text;

            if (ruleType == NQLParser.OPERATOR)
            {
                return(new OperatorNode(text));
            }

            if (ruleType == NQLParser.STRING)
            {
                var unwrappedText = text.TrimStart('\"').TrimEnd('\"');
                return(new StringNode(unwrappedText));
            }

            if (ruleType == NQLParser.NUMBER)
            {
                return(new NumberNode(text));
            }

            if (ruleType == NQLParser.SYMBOL || ruleType == NQLParser.ALPHA)
            {
                if (text == "nil")
                {
                    return(new NilNode());
                }

                if (text == "true")
                {
                    return(new TrueNode());
                }

                if (text == "false")
                {
                    return(new FalseNode());
                }

                return(new SymbolNode(text));
            }

            if (ruleType == NQLParser.KEYWORD)
            {
                return(new KeywordNode(text));
            }

            return(base.VisitTerminal(node));
        }
Exemplo n.º 2
0
 public object VisitTerminal(Antlr4.Runtime.Tree.ITerminalNode node)
 {
     throw new System.NotImplementedException();
 }