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())); }
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)); }
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); }
/// <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); }
private IdToken ConvertVar(ITerminalNode terminalNode) { var text = terminalNode.GetText().Substring(1); return(new IdToken(text, terminalNode.GetTextSpan(), FileNode)); }
protected Expression CreateBinaryOperatorExpression( ParserRuleContext left, ITerminalNode operatorTerminal, ParserRuleContext right) { return(CreateBinaryOperatorExpression(left, operatorTerminal.GetText(), operatorTerminal.GetTextSpan(), right)); }
private PatternUst ProcessId(ITerminalNode idTerminal) { var result = new PatternIdToken(idTerminal.GetText(), idTerminal.GetTextSpan()); return(result); }