如何在语法工具包中定义结构化数据类型



我想定义一个像这样结构/级联的领域特定语言(DSL(

ROOT
  NAME "my dsl"
  TODO
    DESC "foo"
  END
  TODO
    DESC "bar"
  END
END

据我了解,它需要以下规则:

  • ROOT 和 TODO 对象必须以关键字开头,以 END 结尾。
  • ROOT 必须具有 NAME 属性。
  • 待办事项必须具有 DESC 属性
  • TODO 在根中是 0..n 次

如何在 BNF 中表达此类规则集?

基于自定义语言支持教程(简单语言(,以下 BNF 代码段对我有用。

{
  tokens=[
    space='regexp:[sn]+'
    string="regexp:'.*'"
  ]
}
simpleFile ::= 'ROOT' space nameAttr space (todoObj space)+ 'END'
nameAttr ::= 'NAME' space string
todoObj ::= 'TODO' space descAttr space 'END'
descAttr ::= 'DESC' space string

相关内容

  • 没有找到相关文章

最新更新