我读了一篇关于BNF的论文,有些代码我不明白。
terminal ::=
"""value":"value"""
value ::=
["$"]letters_and_or_digits
我不明白"""value":"value"""
的意思。
letters_and_digits
没有更多定义。这是否有效?或者,如果我想定义letters_and_or_digits
。我该怎么办?
谢谢。
答案 0 :(得分:0)
假设来自[1]的地方,据说它在扩展的BNF中,我会用文字和字符类将其翻译成BNF,如下所示:
terminal ::= quote value quote
quote ::= '"'
value ::= letters_and_or_digits
value ::= sigil letters_and_or_digits
sigil ::= '$'
letters_and_or_digits ::= [a-zA-Z0-9]+
注意:EBNF中的[]
表示一个选项,因此["$"]letters_and_or_digits
是。letters_and_or_digits
解释为裸letters_and_or_digits
或
$
前面有{{1}}。
[1]"所有语法文件都是使用扩展名编写的 Backus Naur Form(BNF)语法" - http://www.exida.com/images/uploads/On%20Shaky%20Ground%20-%20NPIC_HMIT_2006%20Paper.pdf