示例#1
0
        private static void TokensToLexeme(List <RawToken> rawTokens, Assembly assembly)
        {
            rawTokens.ForEach(p => p.Token = p.Token.Trim());

            var tokens = new List <Token>();
            var lexeme = new Lexeme(assembly);

            foreach (var token in rawTokens.FindAll(p => !string.IsNullOrWhiteSpace(p.Token)))
            {
                tokens.Add(new Token(
                               token.Token,
                               assembly.Source.FileName,
                               token.LineIndex, token.charIndex,
                               lexeme,
                               out var error));
                if (error != null)
                {
                    lexeme.Error = error;
                }
            }

            if (tokens.Count != 0)
            {
                lexeme.InsertTokens(tokens, out var error);
                if (error != null)
                {
                    lexeme.Error = error;
                }
                assembly.Lexemes.Add(lexeme);
            }
            rawTokens.Clear();
        }