compiler/PPCStarAnyNode.st
changeset 452 9f4558b3be66
parent 438 20598d7ce9fa
child 515 b5316ef15274
--- a/compiler/PPCStarAnyNode.st	Thu Apr 30 23:43:14 2015 +0200
+++ b/compiler/PPCStarAnyNode.st	Sun May 10 06:28:36 2015 +0100
@@ -12,12 +12,30 @@
 !PPCStarAnyNode methodsFor:'as yet unclassified'!
 
 prefix
-	^ #starAny
+    ^ #starAny
+! !
+
+!PPCStarAnyNode methodsFor:'first follow next'!
+
+firstSets: aFirstDictionary into: aSet suchThat: aBlock
+    "
+        First and follow should be performed on the non-specialized tree, i.e. on a tree
+        with star -> messageNode. Not on myself.
+        
+        The reason for that is, that:
+        - I am terminal
+        - I am nullable
+        
+        This means, I look like epsilon node for the first follow analysis. And epsilons 
+        are ignored in sequences, thus sequence of StarMessagePredicate, Literal
+        leads to { Literal } as firstSet and not expected { MessagePredicate, Literal }
+    "
+    ^ self error: 'Cannot perform first/follow analysis on myself, sorry for that :('
 ! !
 
 !PPCStarAnyNode methodsFor:'visiting'!
 
 accept: visitor
-	^ visitor visitStarAnyNode: self
+    ^ visitor visitStarAnyNode: self
 ! !