我想定义一个像这样结构/级联的域特定语言(DSL)
ROOT
NAME "my dsl"
TODO
DESC "foo"
END
TODO
DESC "bar"
END
END
根据我的理解,它需要以下规则:
我如何在BNF中表达这样的规则?
答案 0 :(得分:0)
基于Custom Language Support Tutorial(简单语言),以下BNF代码段适用于我。
{
tokens=[
space='regexp:[\s\n]+'
string="regexp:'.*'"
]
}
simpleFile ::= 'ROOT' space nameAttr space (todoObj space)+ 'END'
nameAttr ::= 'NAME' space string
todoObj ::= 'TODO' space descAttr space 'END'
descAttr ::= 'DESC' space string