]> ocean-lang.org Git - ocean/commitdiff
parsergen: allow non-virtual symbol to carry precedence.
authorNeilBrown <neil@brown.name>
Sat, 15 Jun 2019 23:14:03 +0000 (09:14 +1000)
committerNeilBrown <neil@brown.name>
Sat, 15 Jun 2019 23:14:03 +0000 (09:14 +1000)
When a production has $$foo to explicity set precedence, the 'foo'
doesn't really need to be virtual, it just needs to actually
carry a precedence.

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

index 82d09b3ed1b497362b77ff7a264dff837499c39a..04974c3c6a7d749908ba3e672179e253082fca4e 100644 (file)
@@ -499,8 +499,8 @@ Now we have all the bits we need to parse a full production.
                        vs = sym_find(g, tk.txt);
                        if (vs->num == TK_newline)
                                p.line_like = 1;
-                       else if (vs->type != Virtual) {
-                               err = "symbol after $$ must be virtual";
+                       else if (vs->precedence == 0) {
+                               err = "symbol after $$ must have precedence";
                                goto abort;
                        } else {
                                p.precedence = vs->precedence;