softdevteam / grmtools

Rust grammar tool libraries and binaries
Other
507 stars 31 forks source link

Adding a %grammar-kind declaration? #349

Open ratmice opened 2 years ago

ratmice commented 2 years ago

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.

ltratt commented 1 year ago

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?

ratmice commented 1 year ago

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