public void IsBuiltIn_Function() { Assert.True(LanguageDef.IsBuiltInFunction(Token.Bool)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Number)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Str)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Date)); Assert.True(LanguageDef.IsBuiltInFunction(Token.StrLen)); Assert.True(LanguageDef.IsBuiltInFunction(Token.TrimL)); Assert.True(LanguageDef.IsBuiltInFunction(Token.TrimR)); Assert.True(LanguageDef.IsBuiltInFunction(Token.TrimLR)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Left)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Right)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Mid)); Assert.True(LanguageDef.IsBuiltInFunction(Token.StrPos)); Assert.True(LanguageDef.IsBuiltInFunction(Token.UCase)); Assert.True(LanguageDef.IsBuiltInFunction(Token.LCase)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Chr)); Assert.True(LanguageDef.IsBuiltInFunction(Token.ChrCode)); Assert.True(LanguageDef.IsBuiltInFunction(Token.EmptyStr)); Assert.True(LanguageDef.IsBuiltInFunction(Token.StrReplace)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Year)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Month)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Day)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Hour)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Minute)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Second)); Assert.True(LanguageDef.IsBuiltInFunction(Token.BegOfYear)); Assert.True(LanguageDef.IsBuiltInFunction(Token.BegOfMonth)); Assert.True(LanguageDef.IsBuiltInFunction(Token.BegOfDay)); Assert.True(LanguageDef.IsBuiltInFunction(Token.BegOfHour)); Assert.True(LanguageDef.IsBuiltInFunction(Token.BegOfMinute)); Assert.True(LanguageDef.IsBuiltInFunction(Token.BegOfQuarter)); Assert.True(LanguageDef.IsBuiltInFunction(Token.EndOfYear)); Assert.True(LanguageDef.IsBuiltInFunction(Token.EndOfMonth)); Assert.True(LanguageDef.IsBuiltInFunction(Token.EndOfDay)); Assert.True(LanguageDef.IsBuiltInFunction(Token.EndOfHour)); Assert.True(LanguageDef.IsBuiltInFunction(Token.EndOfMinute)); Assert.True(LanguageDef.IsBuiltInFunction(Token.EndOfQuarter)); Assert.True(LanguageDef.IsBuiltInFunction(Token.WeekOfYear)); Assert.True(LanguageDef.IsBuiltInFunction(Token.DayOfYear)); Assert.True(LanguageDef.IsBuiltInFunction(Token.DayOfWeek)); Assert.True(LanguageDef.IsBuiltInFunction(Token.AddMonth)); Assert.True(LanguageDef.IsBuiltInFunction(Token.CurrentDate)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Integer)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Round)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Log)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Log10)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Sin)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Cos)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Tan)); Assert.True(LanguageDef.IsBuiltInFunction(Token.ASin)); Assert.True(LanguageDef.IsBuiltInFunction(Token.ACos)); Assert.True(LanguageDef.IsBuiltInFunction(Token.ATan)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Exp)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Pow)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Sqrt)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Min)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Max)); Assert.True(LanguageDef.IsBuiltInFunction(Token.Format)); Assert.True(LanguageDef.IsBuiltInFunction(Token.ExceptionInfo)); Assert.True(LanguageDef.IsBuiltInFunction(Token.ExceptionDescr)); }
public override Lexem ReadNextLexem(SourceCodeIterator iterator) { bool isEndOfText = false; char cs = '\0'; int currentLine = iterator.CurrentLine; while (true) { if (!isEndOfText) { cs = iterator.CurrentSymbol; } if (SpecialChars.IsDelimiter(cs) || isEndOfText) { var content = iterator.GetContents(); Lexem lex; if (LanguageDef.IsLogicalOperatorString(content)) { lex = new Lexem() { Type = LexemType.Operator, Token = LanguageDef.GetToken(content), Content = content, LineNumber = currentLine }; } else if (LanguageDef.IsBooleanLiteralString(content)) { lex = new Lexem() { Type = LexemType.BooleanLiteral, Content = content, LineNumber = currentLine }; } else if (LanguageDef.IsUndefinedString(content)) { lex = new Lexem() { Type = LexemType.UndefinedLiteral, Content = content, LineNumber = currentLine }; } else if (LanguageDef.IsNullString(content)) { lex = new Lexem() { Type = LexemType.NullLiteral, Content = content, LineNumber = currentLine }; } else { lex = new Lexem() { Type = LexemType.Identifier, Content = content, Token = LanguageDef.GetToken(content), LineNumber = currentLine }; if (LanguageDef.IsBuiltInFunction(lex.Token)) { iterator.SkipSpaces(); if (iterator.CurrentSymbol != '(') { lex.Token = Token.NotAToken; } } } return(lex); } if (!iterator.MoveNext()) { isEndOfText = true; } } }