Chapter 4. cs:hygiene-report
Get a hygiene report for a grammar. The hygiene report will contain information about unproductive rules and undefined, unused, or unproductive symbols.
cs:hygiene-report($input)→item()
$input | item() | The ixml grammar |
cs:hygiene-report($input, $options)→item()
$input | item() | The ixml grammar |
$options | map(xs:string, item()) | Grammar options |
See Chapter 5, Parser options for a description of the available options.
Like cs:make-parser
, this function will accept an
XML node, an xs:anyURI
, or a string.
It returns a report.
Consider the following grammar:
S: A ; B .
A: 'a', X .
B: 'b', Y .
X: 'x' .
Z: 'z' .
It contains unused and undefined nonterminals.
The XML report is in the
http://nineml.com/ns/coffeegrinder
namespace.
This is an example report for this grammar:
<report xmlns="http://nineml.com/ns/coffeegrinder"
clean="false">
<undefined>
<symbol>Y</symbol>
</undefined>
<unreachable>
<symbol>Z</symbol>
</unreachable>
<unproductive>
<symbol>Y</symbol>
<rule>B ⇒ 'b', Y</rule>
<rule>S ⇒ B</rule>
</unproductive>
</report>
In JSON, the report would be:
{
"report": {
"unproductive": [
"B",
"B ⇒ 'b', Y",
"S ⇒ B"
],
"unreachable": [
"Z"
],
"clean": false,
"undefined": [
"Y"
]
}
}