--- a/compiler/PPCTokenizingVisitor.st Sun May 10 06:28:36 2015 +0100
+++ b/compiler/PPCTokenizingVisitor.st Tue May 12 01:24:03 2015 +0100
@@ -11,26 +11,37 @@
!PPCTokenizingVisitor methodsFor:'hooks'!
-afterAccept: node retval: retval
- Halt if: [ node name = 'start' ].
+afterAccept: node retval: parserNode
self isRoot ifTrue: [
- | tokenizerNode |
+ | tokenizerNode whitespaceNode |
self change.
tokens addLast: self eofToken.
tokens do: [ :token | token unmarkForInline ].
+ whitespaceNode := tokens detect: [ :e | e isTrimmingTokenNode ] ifFound: [:token |
+ token whitespace copy
+ unmarkForInline;
+ name: 'consumeWhitespace';
+ yourself
+ ] ifNone: [
+ PPCNilNode new
+ name: 'consumeWhitespace';
+ yourself
+ ].
+
tokenizerNode := PPCTokenChoiceNode new
children: tokens asArray;
name: 'nextToken';
yourself.
^ PPCTokenizingParserNode new
- parser: retval;
+ parser: parserNode;
tokenizer: tokenizerNode;
+ whitespace: whitespaceNode;
name: #'mainParser';
yourself
].
- ^ retval
+ ^ parserNode
!