比较相同编程语言的不同 EBNF 规则

问题描述 投票:0回答:0

是否有任何开源项目可用于比较定义相同编程语言语法的两个不同 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

(或创建语法图表/图表以便于比较...)

syntax compare bnf ebnf language-specifications
© www.soinside.com 2019 - 2024. All rights reserved.