Bison 这是什么BNF变体?

Bison 这是什么BNF变体?,bison,bnf,Bison,Bnf,我正在考虑使用在Github上找到的一些BNF文件制作一个基于Bison的解析器。然而,我的问题是,我似乎无法确定文件使用的BNF是什么变体 到包含BNF变体样本的文件夹 在中,作者引用了,但他的文件与之完全不同: ## The following comes from: http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form <syntax> : <rule> | <rule> <syntax>

我正在考虑使用在Github上找到的一些BNF文件制作一个基于Bison的解析器。然而,我的问题是,我似乎无法确定文件使用的BNF是什么变体

到包含BNF变体样本的文件夹

在中,作者引用了,但他的文件与之完全不同:

## The following comes from: http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form
<syntax> : <rule> | <rule> <syntax>
<rule> : <opt-whitespace> "<" <RULE-NAME> ">" <opt-whitespace> "::="
<opt-whitespace> <expression> <line-end>
<opt-whitespace> : " " <opt-whitespace> | "" ## "" is empty string, i.e. no whitespace
<expression> : <list> | <list> "|" <expression>
<line-end> : <opt-whitespace> <EOL> | <line-end> <line-end>
<list> : <term> | <term> <opt-whitespace> <list>
<term> : <literal> | "<" <RULE-NAME> ">"
<literal> : '"' <TEXT> '"' | "'" <TEXT> "'" ## actually, the original BNF did not use quotes
有人知道他在用什么吗?如果可能的话,我想把它转换成Bison可读的格式


提前感谢。

这是一种扩展的BNF,类似于各种解析器生成器中使用的BNF,大致基于bison语法,并添加了括号和正则表达式运算符。文件是,摘要是:

  • 作品的左边紧跟着:,如野牛
  • 没有,;在生产结束时(在野牛中;是可选的)
  • *和+是大多数正则表达式库中常见的Kleene星形和加号运算符是常用的交替运算符。(and)是分组括号,也类似于大多数正则表达式实现
  • 然而,可选序列被[and]包围,类似于EBNF
除了最后一点,这使得它基本上与ANTLR使用的基本格式相同

;; Simple baby example of JSON structure
json: number | string
| array
| object
number: NUMBER
string: STRING
array: "[" [json ("," json)*] "]"
object: "{" [kvpair ("," kvpair)*] "}"
kvpair: ID ":" json