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));
 }
Exemple #2
0
        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;
                }
            }
        }