是否有任何开源项目可用于比较定义相同编程语言语法的两个不同 EBNF 规则?
例如(对于 Rust):
来自二茂铁语言规范
Item ::=
OuterAttributeOrDoc* (ItemWithVisibility | MacroItem)
ItemWithVisibility ::=
VisibilityModifier? (
ConstantDeclaration
| EnumDeclaration
| ExternalBlock
| ExternalCrateImport
| FunctionDeclaration
| Implementation
| ModuleDeclaration
| StaticDeclaration
| StructDeclaration
| TraitDeclaration
| TypeAliasDeclaration
| UnionDeclaration
| UseImport
)
MacroItem ::=
MacroRulesDeclaration
| TerminatedMacroInvocation
来自 Rust 参考资料
Item:
OuterAttribute*
VisItem
| MacroItem
VisItem:
Visibility?
(
Module
| ExternCrate
| UseDeclaration
| Function
| TypeAlias
| Struct
| Enumeration
| Union
| ConstantItem
| StaticItem
| Trait
| Implementation
| ExternBlock
)
MacroItem:
MacroInvocationSemi
| MacroRulesDefinition
(或创建语法图表/图表以便于比较...)