grmtools icon indicating copy to clipboard operation
grmtools copied to clipboard

Adding a %grammar-kind declaration?

Open ratmice opened this issue 2 years ago • 2 comments

Before I try and come up with a patch, I figured it would be good to discuss this in an issue, I was considering potentially adding a declaration %grammar-kind Original(NoAction), etc

One of the problems with this is that it is likely that we want to parse the value by just using Deserialize on the YaccGrammarKind, this would at least be the easiest way. But it brings about a few issues

  1. cfgrammar has Optional deserialization support, so if we deserialized that way %grammar-kind would only work with serde feature enabled. Alternately we could just implement this by hand instead of serde?
  2. Some declarations depend upon a specific %grammar-kind, we may have to move some checks from parse_declarations to ast.complete_and_validate.

But it could potentially reduce the number of places that YaccGrammarKind needs to be specified (build.rs, nimbleparse command line, etc). So it seemed like it might be worth considering.

ratmice avatar Sep 05 '22 21:09 ratmice

Oops, I missed this one entirely! I think I'm broadly in favour of this, though we'd have to define what happens if a user specifies YaccGrammarKind and the grammar specifices %grammar-kind. Probably "specifying YaccGrammarKind overrides %grammar-kind" is reasonable?

ltratt avatar Jan 07 '23 08:01 ltratt

Yeah, that seems like the logical/reasonable choice to me, I'll look into an exploratory patch for it.

ratmice avatar Jan 07 '23 10:01 ratmice