diff options
Diffstat (limited to 'src/parse.y')
-rw-r--r-- | src/parse.y | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/parse.y b/src/parse.y index 28f13ad..52f53a6 100644 --- a/src/parse.y +++ b/src/parse.y @@ -21,8 +21,9 @@ grammar |=; +grammar |= grammar directive; -grammar |= grammar rule(rule) { +directive |= rule(rule) { if (grammar->rules.empty()) { solar::item_t init(""); init.get_rhs().push_back(solar::symbol_t::make_nonterm(rule->item.get_lhs().c_str())); @@ -33,14 +34,14 @@ grammar |= grammar rule(rule) { delete rule; } -grammar |= grammar TYPE SYMBOL_LC(nonterm) BLOCK(type) { +directive |= TYPE SYMBOL_LC(nonterm) BLOCK(type) { grammar->nonterm_types.insert(std::make_pair(*nonterm, *type)); delete nonterm; delete type; } -grammar |= grammar TYPE term(term) BLOCK(type) varname(name) { +directive |= TYPE term(term) BLOCK(type) varname(name) { grammar->term_types.insert(std::make_pair(*term, std::make_pair(*type, *name))); delete term; @@ -48,17 +49,17 @@ grammar |= grammar TYPE term(term) BLOCK(type) varname(name) { delete name; } -grammar |= grammar SOURCE BLOCK(block) { +directive |= SOURCE BLOCK(block) { grammar->source_block = *block; delete block; } -grammar |= grammar HEADER BLOCK(block) { +directive |= HEADER BLOCK(block) { grammar->header_block = *block; delete block; } -grammar |= grammar EXTRA_ARG BLOCK(type) varname(name) { +directive |= EXTRA_ARG BLOCK(type) varname(name) { grammar->extra_args.push_back(std::make_pair(*type, *name)); delete type; |