]> ocean-lang.org Git - ocean/commitdiff
parsergen: only non-terminals should make a state "starts_line"
authorNeilBrown <neil@brown.name>
Fri, 28 Jun 2019 09:36:49 +0000 (19:36 +1000)
committerNeilBrown <neil@brown.name>
Fri, 28 Jun 2019 09:36:49 +0000 (19:36 +1000)
If a state is followed by NEWLINE, then it isn't starts_line - more like
ends_line.
It is only non-terminals containing NEWLINEs that cause a state
to be starts_line.
So move the test to after we stop looking at terminals.

Signed-off-by: NeilBrown <neil@brown.name>
csrc/parsergen.mdc

index df73f513ceec725931af6c78832d234a0913e45a..fdbe0ead7ecc3d01dd080d32862ef87d296edd33 100644 (file)
@@ -1334,11 +1334,11 @@ into the go to set, so the item is ineffective.
                        continue;
                if (symset_find(&done, s->num) < 0) {
                        symset_add(&done, s->num, 0);
-                       if (s->line_like)
-                               is->starts_line = 1;
                }
                if (s->type != Nonterminal)
                        continue;
+               if (s->line_like)
+                       is->starts_line = 1;
                again = 1;
                if (type >= LALR) {
                        // Need the LA set.