private List <SyntaxToken> ExpandNestedMacro(NestedMacroExpansionLexer lexer) { var result = new List <SyntaxToken>(); SyntaxToken token; while ((token = lexer.GetNextToken()) != null) { // Do token pasting (##). if (lexer.Peek(0) != null && lexer.Peek(0).Kind == SyntaxKind.HashHashToken && lexer.Peek(1) != null && lexer.Peek(1).Kind != SyntaxKind.HashHashToken) { lexer.GetNextToken(); var concatenatedText = token.Text + lexer.GetNextToken().Text; token = new HlslLexer(new StringText(concatenatedText)).Lex(LexerMode.Syntax); } List <SyntaxToken> expandedTokens; if (TryExpandMacro(token, lexer, out expandedTokens)) { result.AddRange(expandedTokens); } else { result.Add(token); } } return(result); }
private List <SyntaxToken> ExpandNestedMacro(NestedMacroExpansionLexer lexer) { var result = new List <SyntaxToken>(); SyntaxToken token; while ((token = lexer.GetNextToken()) != null) { List <SyntaxToken> expandedTokens; if (TryExpandMacro(token, lexer, out expandedTokens)) { result.AddRange(expandedTokens); } else { result.Add(token); } } return(result); }
private List<SyntaxToken> ExpandNestedMacro(NestedMacroExpansionLexer lexer) { var result = new List<SyntaxToken>(); SyntaxToken token; while ((token = lexer.GetNextToken()) != null) { // Do token pasting (##). if (lexer.Peek(0) != null && lexer.Peek(0).Kind == SyntaxKind.HashHashToken && lexer.Peek(1) != null && lexer.Peek(1).Kind != SyntaxKind.HashHashToken) { lexer.GetNextToken(); var concatenatedText = token.Text + lexer.GetNextToken().Text; token = new HlslLexer(new StringText(concatenatedText)).Lex(LexerMode.Syntax); } List<SyntaxToken> expandedTokens; if (TryExpandMacro(token, lexer, out expandedTokens)) result.AddRange(expandedTokens); else result.Add(token); } return result; }
private List<SyntaxToken> ExpandNestedMacro(NestedMacroExpansionLexer lexer) { var result = new List<SyntaxToken>(); SyntaxToken token; while ((token = lexer.GetNextToken()) != null) { List<SyntaxToken> expandedTokens; if (TryExpandMacro(token, lexer, out expandedTokens)) result.AddRange(expandedTokens); else result.Add(token); } return result; }