Are there any open-source projects that can be used to compare two different EBNF rules that define the syntax of the same programming language?
e.g.(for Rust):
From Ferrocene Language Specification
Item ::=
OuterAttributeOrDoc* (ItemWithVisibility | MacroItem)
ItemWithVisibility ::=
VisibilityModifier? (
ConstantDeclaration
| EnumDeclaration
| ExternalBlock
| ExternalCrateImport
| FunctionDeclaration
| Implementation
| ModuleDeclaration
| StaticDeclaration
| StructDeclaration
| TraitDeclaration
| TypeAliasDeclaration
| UnionDeclaration
| UseImport
)
MacroItem ::=
MacroRulesDeclaration
| TerminatedMacroInvocation
From The Rust Reference
Item:
OuterAttribute*
VisItem
| MacroItem
VisItem:
Visibility?
(
Module
| ExternCrate
| UseDeclaration
| Function
| TypeAlias
| Struct
| Enumeration
| Union
| ConstantItem
| StaticItem
| Trait
| Implementation
| ExternBlock
)
MacroItem:
MacroInvocationSemi
| MacroRulesDefinition
(Or creating a syntax diagram/railroad/chart for easy comparison...)