static PatternToken GetToken(string token, PatternToken previousToken) { if (string.IsNullOrEmpty(token)) { return(PatternToken.UNKNOWN); } TokenCharacterType lType = GetCharType(token[0]); if (lType == TokenCharacterType.UNKNOWN) { return(PatternToken.UNKNOWN); } if (lType == TokenCharacterType.WORD) { if (token.Length == 1) { return(PatternToken.VARIABLE); // variables are one character only (at least in this language) } else { return(PatternToken.FUNCTION); // functions are always more than on character (in this language) } } if (lType == TokenCharacterType.NUMBER) { return(PatternToken.INTEGER); } if ((lType == TokenCharacterType.STAR) && (previousToken == PatternToken.COMMA || previousToken == PatternToken.OPEN_PARA)) { return(PatternToken.VARIABLE); } if (PatternTokens.Instance.ContainsKey(token)) { return(PatternTokens.Instance[token]); } return(PatternToken.UNKNOWN); }
static string ReadTokenString(string code, ref int position) { string lToken = string.Empty; TokenCharacterType lType = TokenCharacterType.UNKNOWN; while (position < code.Length) { char c = code[position++]; if (c != ' ') { TokenCharacterType lCurType = GetCharType(c); if (lCurType != TokenCharacterType.UNKNOWN) { if (lType == TokenCharacterType.UNKNOWN) { lType = lCurType; lToken = lToken + c; if (lCurType == TokenCharacterType.SEPERATOR) { return(lToken); } } else if (lType == lCurType) { lToken = lToken + c; } else if (lType != lCurType) { position--; return(lToken); } } } } return(lToken); }