Example #1
0
        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());
        }
Example #2
0
        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);
        }