0

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...)

user584011
  • 41
  • 4

0 Answers0