@@ -47,44 +47,40 @@ public ComponentParseTask(QualifiedModuleName module, IVBAPreprocessor preproces
47
47
_parser = new VBAModuleParser ( ) ;
48
48
}
49
49
50
- public void Start ( CancellationToken token )
50
+ public void Start ( CancellationToken cancellationToken )
51
51
{
52
52
try
53
53
{
54
54
Logger . Trace ( $ "Starting ParseTaskID { _taskId } on thread { Thread . CurrentThread . ManagedThreadId } .") ;
55
55
56
- var tokenStream = RewriteAndPreprocess ( token ) ;
57
- token . ThrowIfCancellationRequested ( ) ;
58
-
59
- IParseTree attributesTree ;
60
- IDictionary < Tuple < string , DeclarationType > , Attributes > attributes ;
61
- var attributesTokenStream = RunAttributesPass ( token , out attributesTree , out attributes ) ;
62
-
63
- var rewriter = new MemberAttributesRewriter ( _exporter , _component . CodeModule , new TokenStreamRewriter ( attributesTokenStream ?? tokenStream ) ) ;
56
+ var tokenStream = RewriteAndPreprocess ( cancellationToken ) ;
57
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
64
58
65
59
// temporal coupling... comments must be acquired before we walk the parse tree for declarations
66
60
// otherwise none of the annotations get associated to their respective Declaration
67
61
var commentListener = new CommentListener ( ) ;
68
62
var annotationListener = new AnnotationListener ( new VBAParserAnnotationFactory ( ) , _qualifiedName ) ;
69
63
70
64
var stopwatch = Stopwatch . StartNew ( ) ;
71
- ITokenStream stream ;
72
- var tree = ParseInternal ( _component . Name , tokenStream , new IParseTreeListener [ ] { commentListener , annotationListener } , out stream ) ;
65
+ var codePaneParseResults = ParseInternal ( _component . Name , tokenStream , new IParseTreeListener [ ] { commentListener , annotationListener } ) ;
73
66
stopwatch . Stop ( ) ;
74
- token . ThrowIfCancellationRequested ( ) ;
67
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
75
68
76
69
var comments = QualifyAndUnionComments ( _qualifiedName , commentListener . Comments , commentListener . RemComments ) ;
77
- token . ThrowIfCancellationRequested ( ) ;
70
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
71
+
72
+ var attributesPassParseResults = RunAttributesPass ( cancellationToken ) ;
73
+ var rewriter = new MemberAttributesRewriter ( _exporter , _component . CodeModule , new TokenStreamRewriter ( attributesPassParseResults . tokenStream ?? tokenStream ) ) ;
78
74
79
75
var completedHandler = ParseCompleted ;
80
- if ( completedHandler != null && ! token . IsCancellationRequested )
76
+ if ( completedHandler != null && ! cancellationToken . IsCancellationRequested )
81
77
completedHandler . Invoke ( this , new ParseCompletionArgs
82
78
{
83
- ParseTree = tree ,
84
- AttributesTree = attributesTree ,
85
- Tokens = stream ,
79
+ ParseTree = codePaneParseResults . tree ,
80
+ AttributesTree = attributesPassParseResults . tree ,
81
+ Tokens = codePaneParseResults . tokenStream ,
86
82
AttributesRewriter = rewriter ,
87
- Attributes = attributes ,
83
+ Attributes = attributesPassParseResults . attributes ,
88
84
Comments = comments ,
89
85
Annotations = annotationListener . Annotations
90
86
} ) ;
@@ -128,14 +124,12 @@ public void Start(CancellationToken token)
128
124
}
129
125
}
130
126
131
- private ITokenStream RunAttributesPass ( CancellationToken token , out IParseTree attributesTree ,
132
- out IDictionary < Tuple < string , DeclarationType > , Attributes > attributes )
127
+ private ( IParseTree tree , ITokenStream tokenStream , IDictionary < Tuple < string , DeclarationType > , Attributes > attributes ) RunAttributesPass ( CancellationToken cancellationToken )
133
128
{
134
129
Logger . Trace ( $ "ParseTaskID { _taskId } begins attributes pass.") ;
135
- ITokenStream attributesTokenStream ;
136
- attributes = _attributeParser . Parse ( _component , token , out attributesTokenStream , out attributesTree ) ;
130
+ var attributesParseResults = _attributeParser . Parse ( _component , cancellationToken ) ;
137
131
Logger . Trace ( $ "ParseTaskID { _taskId } finished attributes pass.") ;
138
- return attributesTokenStream ;
132
+ return attributesParseResults ;
139
133
}
140
134
141
135
private static string GetCode ( ICodeModule module )
@@ -152,20 +146,20 @@ private static string GetCode(ICodeModule module)
152
146
return code ;
153
147
}
154
148
155
- private CommonTokenStream RewriteAndPreprocess ( CancellationToken token )
149
+ private CommonTokenStream RewriteAndPreprocess ( CancellationToken cancellationToken )
156
150
{
157
- var code = _rewriter == null ? string . Join ( Environment . NewLine , GetCode ( _component . CodeModule ) ) : _rewriter . GetText ( ) ;
151
+ var code = _rewriter ? . GetText ( ) ?? string . Join ( Environment . NewLine , GetCode ( _component . CodeModule ) ) ;
158
152
var tokenStreamProvider = new SimpleVBAModuleTokenStreamProvider ( ) ;
159
153
var tokens = tokenStreamProvider . Tokens ( code ) ;
160
- _preprocessor . PreprocessTokenStream ( _component . Name , tokens , token ) ;
154
+ _preprocessor . PreprocessTokenStream ( _component . Name , tokens , cancellationToken ) ;
161
155
return tokens ;
162
156
}
163
157
164
- private IParseTree ParseInternal ( string moduleName , CommonTokenStream tokenStream , IParseTreeListener [ ] listeners , out ITokenStream outStream )
158
+ private ( IParseTree tree , ITokenStream tokenStream ) ParseInternal ( string moduleName , CommonTokenStream tokenStream , IParseTreeListener [ ] listeners )
165
159
{
166
160
//var errorNotifier = new SyntaxErrorNotificationListener();
167
161
//errorNotifier.OnSyntaxError += ParserSyntaxError;
168
- return _parser . Parse ( moduleName , tokenStream , listeners , new ExceptionErrorListener ( ) , out outStream ) ;
162
+ return _parser . Parse ( moduleName , tokenStream , listeners , new ExceptionErrorListener ( ) ) ;
169
163
}
170
164
171
165
private IEnumerable < CommentNode > QualifyAndUnionComments ( QualifiedModuleName qualifiedName , IEnumerable < VBAParser . CommentContext > comments , IEnumerable < VBAParser . RemCommentContext > remComments )
0 commit comments