public ISyntaxObject ScanFile() { Line++; string text = string.Empty; ISyntaxObject syntaxObject = null; for (int i = 1; i <= Code[Line].Length; i++) { text = Code[Line].Substring(0, i); text = text.Replace(" ", string.Empty); foreach (var element in LexElements) { Keyword keyword = element.GetKeyword(text); if (keyword != Keyword.Unknown && keyword != Keyword.LanguageSymbols) { syntaxObject = element.GetSyntaxScaner(); syntaxObject.Context = Code[Line]; if (syntaxObject.Elements.ElementCount == 0) { syntaxObject.Elements.Add(text); } } } } if (text != string.Empty) { return(syntaxObject); } return(new EmptySyntax()); }
public bool CodeAnalysis(string filePath = null) { int line = 0; Lexer lexer; if (filePath != null) { lexer = new Lexer(filePath); } else if (this.FilePath != null) { lexer = new Lexer(this.FilePath); } else { Console.WriteLine("Code file is undefined!"); return(false); } lexer.ReadFile(lexer.FilePath); foreach (var item in lexer.Code) { line++; ISyntaxObject syntaxObject = lexer.ScanFile(); if (syntaxObject != null) { Syntax.Add(syntaxObject); } else { Console.WriteLine("Unnown lex at line {0}!", line); return(false); } } return(true); }