internal static MathExpression FromTokens(StringToken[] tokens) { var reader = new StringTokenReader <StringToken>(tokens); ///TODO: Read math formula here return(null); }
void IStringTokenReaderHelper.ReportError( string str, int offset, Token token, string errorId) { StringTokenReader.ReportError(this._parser, str, offset, errorId); }
void IStringTokenReaderHelper.ReportMissingTerminator( string str, int startOffset, int errorOffset, string errorId, Token token, string terminator) { StringTokenReader.ReportMissingTerminator(this._parser, str, startOffset, errorOffset, errorId, terminator); }
public static TokenReader BuildChainOfResponsibility() { CommentReader commentReader = new CommentReader(); WhiteSpaceReader whiteSpaceReader = new WhiteSpaceReader(); EqualityTokenReader equalityTokenReader = new EqualityTokenReader(); SingleCharacterTokenReader singleCharacterTokenReader = new SingleCharacterTokenReader(Reserved.Characters); StringTokenReader stringTokenReader = new StringTokenReader(); IdentifierTokenReader identifierTokenReader = new IdentifierTokenReader(); NumberTokenReader numberTokenReader = new NumberTokenReader(); commentReader.SetSuccessor(whiteSpaceReader); whiteSpaceReader.SetSuccessor(equalityTokenReader); equalityTokenReader.SetSuccessor(singleCharacterTokenReader); singleCharacterTokenReader.SetSuccessor(stringTokenReader); stringTokenReader.SetSuccessor(identifierTokenReader); identifierTokenReader.SetSuccessor(numberTokenReader); return(commentReader); }
internal override Token GetToken(string input, ref int offset) { if (offset >= input.Length) { return((Token)null); } char ch = input[offset]; switch (ch) { case '$': case '@': int offset1 = offset + 1; if (offset1 >= input.Length) { return((Token)null); } if (ch == '@' && input[offset1] == '{' || input[offset1] == '(') { return((Token)null); } bool inBraces = false; string text = StringTokenReader.MatchVariableName(input, ref offset1, (IStringTokenReaderHelper)this.Tokenizer, (Token)null, out inBraces); if (string.IsNullOrEmpty(text)) { if (inBraces) { this._tokenizer.Parser.ReportException((object)null, typeof(ParseException), this._tokenizer.PositionToken(offset), "EmptyVariableReference"); } return((Token)null); } if (offset1 < input.Length && this.Tokenizer.IsEnabled(8) && ":.[{}();,|&\r\n\t ".IndexOf(input[offset1]) == -1) { return((Token)null); } offset = offset1; return(new Token(text, ch == '@' ? TokenId.SplattedVariableToken : TokenId.VariableToken)); default: return((Token)null); } }