Grammarkdown 2.2.5 new features may help with linting/diagnostics
@bakkot I've added a few features to grammarkdown that may be useful for ecmarkup linting:
- Significant indentation gets reset after each
grammarkdowntop-level element is parsed -
@definedirectives only apply to the lines that follow, and can be reset - New
@linedirectives allow you to customize whatgrammarkdownreports for diagnostic messages
You can read more about them in the release info here: https://github.com/rbuckton/grammarkdown/releases/tag/2.2.5
In summary, the goal is that you could extract the entire grammar of an ecmarkup file into a single grammarkdown file for the purposes of checking/linting:
spec.html
<emu-clause id="...">
<h1>Syntax</h1>
<emu-grammar>
Production :
Nonterminal1
Nonterminal2
</emu-grammar>
<emu-clause id="...">
<h1>Static Semantics</h1>
<emu-grammar>Production : Nonterminal1</emu-grammar>
</emu-clause>
</emu-clause>
spec.html.grammarkdown (generated)
@line 4 "spec.html"
Production :
Nonterminal1
Nonterminal2
@define noStrictParametricProductions true
@line 10 "spec.html"
Production : Nontermnal1
@define noStrictParametricProductions default
I'm also considering adding a way to make HTML transformations easier, possibly by adding an @ directive to specify an id attribute in the ecmarkup content generated by grammarkdown so that you might be able to leverage document.getElementById against the JSDOM generated by the output to extract the results.
I added most of these features to support changes I've been working on for my ecmarkup VSCode extension pet project in an effort to make my own life easier, and thought they might be helpful for ecmarkup itself as well.
Neat! I'll play around with this next time I need to tweak the grammar linting process.