private static Lexem ExtractOperatorContent(SourceCodeIterator iterator) { Lexem lex; var content = iterator.GetContents(); lex = new Lexem() { Type = LexemType.Operator, Content = content, Token = LanguageDef.GetToken(content) }; return(lex); }
public void All_Tokens() { Assert.Equal(Token.If, LanguageDef.GetToken("если")); Assert.Equal(Token.Then, LanguageDef.GetToken("тогда")); Assert.Equal(Token.Else, LanguageDef.GetToken("иначе")); Assert.Equal(Token.ElseIf, LanguageDef.GetToken("иначеесли")); Assert.Equal(Token.EndIf, LanguageDef.GetToken("конецесли")); Assert.Equal(Token.VarDef, LanguageDef.GetToken("перем")); Assert.Equal(Token.ByValParam, LanguageDef.GetToken("знач")); Assert.Equal(Token.Procedure, LanguageDef.GetToken("процедура")); Assert.Equal(Token.EndProcedure, LanguageDef.GetToken("конецпроцедуры")); Assert.Equal(Token.Function, LanguageDef.GetToken("функция")); Assert.Equal(Token.EndFunction, LanguageDef.GetToken("конецфункции")); Assert.Equal(Token.For, LanguageDef.GetToken("для")); Assert.Equal(Token.Each, LanguageDef.GetToken("каждого")); Assert.Equal(Token.In, LanguageDef.GetToken("из")); Assert.Equal(Token.To, LanguageDef.GetToken("по")); Assert.Equal(Token.While, LanguageDef.GetToken("пока")); Assert.Equal(Token.Loop, LanguageDef.GetToken("цикл")); Assert.Equal(Token.EndLoop, LanguageDef.GetToken("конеццикла")); Assert.Equal(Token.Return, LanguageDef.GetToken("возврат")); Assert.Equal(Token.Continue, LanguageDef.GetToken("продолжить")); Assert.Equal(Token.Break, LanguageDef.GetToken("прервать")); Assert.Equal(Token.Try, LanguageDef.GetToken("попытка")); Assert.Equal(Token.Exception, LanguageDef.GetToken("исключение")); Assert.Equal(Token.RaiseException, LanguageDef.GetToken("вызватьисключение")); Assert.Equal(Token.EndTry, LanguageDef.GetToken("конецпопытки")); Assert.Equal(Token.NewObject, LanguageDef.GetToken("новый")); Assert.Equal(Token.Export, LanguageDef.GetToken("экспорт")); Assert.Equal(Token.If, LanguageDef.GetToken("if")); Assert.Equal(Token.Then, LanguageDef.GetToken("then")); Assert.Equal(Token.Else, LanguageDef.GetToken("else")); Assert.Equal(Token.ElseIf, LanguageDef.GetToken("elsif")); Assert.Equal(Token.EndIf, LanguageDef.GetToken("endif")); Assert.Equal(Token.VarDef, LanguageDef.GetToken("var")); Assert.Equal(Token.ByValParam, LanguageDef.GetToken("val")); Assert.Equal(Token.Procedure, LanguageDef.GetToken("procedure")); Assert.Equal(Token.EndProcedure, LanguageDef.GetToken("endprocedure")); Assert.Equal(Token.Function, LanguageDef.GetToken("function")); Assert.Equal(Token.EndFunction, LanguageDef.GetToken("endfunction")); Assert.Equal(Token.For, LanguageDef.GetToken("for")); Assert.Equal(Token.Each, LanguageDef.GetToken("each")); Assert.Equal(Token.In, LanguageDef.GetToken("in")); Assert.Equal(Token.To, LanguageDef.GetToken("to")); Assert.Equal(Token.While, LanguageDef.GetToken("while")); Assert.Equal(Token.Loop, LanguageDef.GetToken("do")); Assert.Equal(Token.EndLoop, LanguageDef.GetToken("enddo")); Assert.Equal(Token.Return, LanguageDef.GetToken("return")); Assert.Equal(Token.Continue, LanguageDef.GetToken("continue")); Assert.Equal(Token.Break, LanguageDef.GetToken("break")); Assert.Equal(Token.Try, LanguageDef.GetToken("try")); Assert.Equal(Token.Exception, LanguageDef.GetToken("except")); Assert.Equal(Token.RaiseException, LanguageDef.GetToken("raise")); Assert.Equal(Token.EndTry, LanguageDef.GetToken("endtry")); Assert.Equal(Token.NewObject, LanguageDef.GetToken("new")); Assert.Equal(Token.Export, LanguageDef.GetToken("export")); Assert.Equal(Token.Plus, LanguageDef.GetToken("+")); Assert.Equal(Token.Minus, LanguageDef.GetToken("-")); Assert.Equal(Token.Multiply, LanguageDef.GetToken("*")); Assert.Equal(Token.Division, LanguageDef.GetToken("/")); Assert.Equal(Token.LessThan, LanguageDef.GetToken("<")); Assert.Equal(Token.LessOrEqual, LanguageDef.GetToken("<=")); Assert.Equal(Token.MoreThan, LanguageDef.GetToken(">")); Assert.Equal(Token.MoreOrEqual, LanguageDef.GetToken(">=")); Assert.Equal(Token.NotEqual, LanguageDef.GetToken("<>")); Assert.Equal(Token.Modulo, LanguageDef.GetToken("%")); Assert.Equal(Token.And, LanguageDef.GetToken("и")); Assert.Equal(Token.Or, LanguageDef.GetToken("или")); Assert.Equal(Token.Not, LanguageDef.GetToken("не")); Assert.Equal(Token.OpenPar, LanguageDef.GetToken("(")); Assert.Equal(Token.ClosePar, LanguageDef.GetToken(")")); Assert.Equal(Token.OpenBracket, LanguageDef.GetToken("[")); Assert.Equal(Token.CloseBracket, LanguageDef.GetToken("]")); Assert.Equal(Token.Dot, LanguageDef.GetToken(".")); Assert.Equal(Token.Comma, LanguageDef.GetToken(",")); Assert.Equal(Token.Equal, LanguageDef.GetToken("=")); Assert.Equal(Token.Semicolon, LanguageDef.GetToken(";")); Assert.Equal(Token.Question, LanguageDef.GetToken("?")); Assert.Equal(Token.Bool, LanguageDef.GetToken("булево")); Assert.Equal(Token.Number, LanguageDef.GetToken("число")); Assert.Equal(Token.Str, LanguageDef.GetToken("строка")); Assert.Equal(Token.Date, LanguageDef.GetToken("дата")); Assert.Equal(Token.StrLen, LanguageDef.GetToken("стрдлина")); Assert.Equal(Token.TrimL, LanguageDef.GetToken("сокрл")); Assert.Equal(Token.TrimR, LanguageDef.GetToken("сокрп")); Assert.Equal(Token.TrimLR, LanguageDef.GetToken("сокрлп")); Assert.Equal(Token.Left, LanguageDef.GetToken("лев")); Assert.Equal(Token.Right, LanguageDef.GetToken("прав")); Assert.Equal(Token.Mid, LanguageDef.GetToken("сред")); Assert.Equal(Token.StrPos, LanguageDef.GetToken("найти")); Assert.Equal(Token.UCase, LanguageDef.GetToken("врег")); Assert.Equal(Token.LCase, LanguageDef.GetToken("нрег")); Assert.Equal(Token.Chr, LanguageDef.GetToken("символ")); Assert.Equal(Token.ChrCode, LanguageDef.GetToken("кодсимвола")); Assert.Equal(Token.EmptyStr, LanguageDef.GetToken("пустаястрока")); Assert.Equal(Token.StrReplace, LanguageDef.GetToken("стрзаменить")); Assert.Equal(Token.Year, LanguageDef.GetToken("год")); Assert.Equal(Token.Month, LanguageDef.GetToken("месяц")); Assert.Equal(Token.Day, LanguageDef.GetToken("день")); Assert.Equal(Token.Hour, LanguageDef.GetToken("час")); Assert.Equal(Token.Minute, LanguageDef.GetToken("минута")); Assert.Equal(Token.Second, LanguageDef.GetToken("секунда")); Assert.Equal(Token.BegOfYear, LanguageDef.GetToken("началогода")); Assert.Equal(Token.BegOfMonth, LanguageDef.GetToken("началомесяца")); Assert.Equal(Token.BegOfDay, LanguageDef.GetToken("началодня")); Assert.Equal(Token.BegOfHour, LanguageDef.GetToken("началочаса")); Assert.Equal(Token.BegOfMinute, LanguageDef.GetToken("началоминуты")); Assert.Equal(Token.BegOfQuarter, LanguageDef.GetToken("началоквартала")); Assert.Equal(Token.EndOfYear, LanguageDef.GetToken("конецгода")); Assert.Equal(Token.EndOfMonth, LanguageDef.GetToken("конецмесяца")); Assert.Equal(Token.EndOfDay, LanguageDef.GetToken("конецдня")); Assert.Equal(Token.EndOfHour, LanguageDef.GetToken("конецчаса")); Assert.Equal(Token.EndOfMinute, LanguageDef.GetToken("конецминуты")); Assert.Equal(Token.EndOfQuarter, LanguageDef.GetToken("конецквартала")); Assert.Equal(Token.WeekOfYear, LanguageDef.GetToken("неделягода")); Assert.Equal(Token.DayOfYear, LanguageDef.GetToken("деньгода")); Assert.Equal(Token.DayOfWeek, LanguageDef.GetToken("деньнедели")); Assert.Equal(Token.AddMonth, LanguageDef.GetToken("добавитьмесяц")); Assert.Equal(Token.CurrentDate, LanguageDef.GetToken("текущаядата")); Assert.Equal(Token.Integer, LanguageDef.GetToken("цел")); Assert.Equal(Token.Round, LanguageDef.GetToken("окр")); Assert.Equal(Token.Log, LanguageDef.GetToken("log")); Assert.Equal(Token.Log10, LanguageDef.GetToken("log10")); Assert.Equal(Token.Sin, LanguageDef.GetToken("sin")); Assert.Equal(Token.Cos, LanguageDef.GetToken("cos")); Assert.Equal(Token.Tan, LanguageDef.GetToken("tan")); Assert.Equal(Token.ASin, LanguageDef.GetToken("aSin")); Assert.Equal(Token.ACos, LanguageDef.GetToken("acos")); Assert.Equal(Token.ATan, LanguageDef.GetToken("atan")); Assert.Equal(Token.Exp, LanguageDef.GetToken("exp")); Assert.Equal(Token.Pow, LanguageDef.GetToken("Pow")); Assert.Equal(Token.Sqrt, LanguageDef.GetToken("sqrt")); Assert.Equal(Token.Min, LanguageDef.GetToken("min")); Assert.Equal(Token.Max, LanguageDef.GetToken("max")); Assert.Equal(Token.Format, LanguageDef.GetToken("format")); Assert.Equal(Token.ExceptionInfo, LanguageDef.GetToken("информацияобошибке")); Assert.Equal(Token.ExceptionDescr, LanguageDef.GetToken("описаниеошибки")); }
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; } } }