public void PreprocessTokenStream(string moduleName, CommonTokenStream tokenStream, CancellationToken token) { token.ThrowIfCancellationRequested(); var symbolTable = new SymbolTable <string, IValue>(); var tree = _parser.Parse(moduleName, tokenStream); token.ThrowIfCancellationRequested(); var stream = tokenStream.TokenSource.InputStream; var evaluator = new VBAPreprocessorVisitor(symbolTable, new VBAPredefinedCompilationConstants(_vbaVersion), stream, tokenStream); var expr = evaluator.Visit(tree); var processedTokens = expr.Evaluate(); //This does the actual preprocessing of the token stream as a side effect. tokenStream.Reset(); }
public CommonTokenStream PreprocessTokenStream(string projectId, string moduleName, CommonTokenStream tokenStream, CancellationToken token, CodeKind codeKind = CodeKind.SnippetCode) { token.ThrowIfCancellationRequested(); var tree = _parser.Parse(moduleName, tokenStream, codeKind); token.ThrowIfCancellationRequested(); var charStream = tokenStream.TokenSource.InputStream; var symbolTable = new SymbolTable <string, IValue>(); var userCompilationArguments = _compilationArgumentsProvider.UserDefinedCompilationArguments(projectId); var predefinedCompilationArgument = _compilationArgumentsProvider.PredefinedCompilationConstants; var evaluator = new VBAPreprocessorVisitor(symbolTable, predefinedCompilationArgument, userCompilationArguments, charStream, tokenStream); var expr = evaluator.Visit(tree); var processedTokens = expr.Evaluate(); //This does the actual preprocessing of the token stream as a side effect. tokenStream.Reset(); return(tokenStream); }