Example #1
0
        private IdToken ProcessId(ITerminalNode idTerminal)
        {
            string  id = idTerminal.GetText();
            IdToken result;

            if (SourceLanguage.IsCaseInsensitive())
            {
                result = new PatternIdToken("(?i)^" + id + "$", idTerminal.GetTextSpan());
            }
            else
            {
                result = new IdToken(id, idTerminal.GetTextSpan(), null);
            }
            return(result);
        }
 private InvocationExpression CreateSpecialInvocation(ITerminalNode name,
                                                      ParserRuleContext context, List <Expression> expressions)
 {
     return(new InvocationExpression(
                new IdToken(name.Symbol.Text.ToLowerInvariant(), name.GetTextSpan()),
                new ArgsUst(expressions), context.GetTextSpan()));
 }
Example #3
0
        public virtual Ust VisitTerminal(ITerminalNode node)
        {
            Token    result;
            string   nodeText = node.GetText();
            TextSpan textSpan = node.GetTextSpan();

            if ((nodeText.StartsWith("'") && nodeText.EndsWith("'")) ||
                (nodeText.StartsWith("\"") && nodeText.EndsWith("\"")))
            {
                result = new StringLiteral(nodeText.Substring(1, nodeText.Length - 2), textSpan);
            }
            else if (nodeText.Contains("."))
            {
                double.TryParse(nodeText, out double value);
                return(new FloatLiteral(value, textSpan));
            }

            var integerToken = TryParseInteger(nodeText, textSpan);

            if (integerToken != null)
            {
                return(integerToken);
            }
            else
            {
                result = new IdToken(nodeText, textSpan);
            }
            return(result);
        }
 private InvocationExpression CreateSpecialInvocation(ITerminalNode name,
                                                      ParserRuleContext context, Expression expression)
 {
     return(new InvocationExpression(
                new IdToken(name.Symbol.Text.ToLowerInvariant(), name.GetTextSpan(), FileNode),
                new ArgsNode(expression), context.GetTextSpan(), FileNode));
 }
Example #5
0
        private Expression CreateSpecialInvocation(ITerminalNode specialMethodTerminal, PHPParser.ExpressionContext expression, TextSpan contextTextSpan)
        {
            var expression0 = (Expression)VisitExpression(expression);
            var result      = new InvocationExpression(
                new IdToken(specialMethodTerminal.GetText(), specialMethodTerminal.GetTextSpan(), FileNode),
                new ArgsNode(new List <Expression>()
            {
                expression0
            }, expression.GetTextSpan(), FileNode),
                contextTextSpan, FileNode);

            return(result);
        }
Example #6
0
        /// <returns><see cref="Token"/></returns>
        public override UstNode VisitTerminal(ITerminalNode node)
        {
            string   text     = node.GetText();
            TextSpan textSpan = node.GetTextSpan();
            Token    result;
            double   doubleResult;

            if (text.StartsWith("'"))
            {
                result = new StringLiteral(text.Substring(1, text.Length - 2), textSpan, FileNode);
            }
            else if (text.ToLowerInvariant().StartsWith("n'"))
            {
                result = new StringLiteral(text.Substring(2, text.Length - 3), textSpan, FileNode);
            }
            else if (text.All(c => char.IsDigit(c)))
            {
                result = new IntLiteral(long.Parse(text), textSpan, FileNode);
            }
            else if (double.TryParse(text, out doubleResult))
            {
                result = new FloatLiteral(doubleResult, textSpan, FileNode);
            }
            else if (text.All(c => char.IsLetterOrDigit(c) || c == '_'))
            {
                result = new IdToken(text, textSpan, FileNode);
            }
            else
            {
                if (text.Any(c => char.IsLetterOrDigit(c) || c == '_'))
                {
                    Logger.LogDebug($"{text} converter to IdToken");
                    result = new IdToken(text, textSpan, FileNode);
                }
                else
                {
                    result = null;
                }
            }
            return(result);
        }
Example #7
0
        private IdToken ConvertVar(ITerminalNode terminalNode)
        {
            var text = terminalNode.GetText().Substring(1);

            return(new IdToken(text, terminalNode.GetTextSpan(), FileNode));
        }
Example #8
0
 protected Expression CreateBinaryOperatorExpression(
     ParserRuleContext left, ITerminalNode operatorTerminal, ParserRuleContext right)
 {
     return(CreateBinaryOperatorExpression(left, operatorTerminal.GetText(), operatorTerminal.GetTextSpan(), right));
 }
Example #9
0
        private PatternUst ProcessId(ITerminalNode idTerminal)
        {
            var result = new PatternIdToken(idTerminal.GetText(), idTerminal.GetTextSpan());

            return(result);
        }