ABNF 描述四则运算

文法分为:

无限制文法、上下文相关文法、上下文无关文法、正则文法

BNF 巴科斯诺尔范式是一种用于表示上下文无关文法的语言 ,一类形式语言

BNF规定是推导规则(产生式)的集合 表示为 : 符号 ::= <使用符号的表达式>

终结符 是指一个形式语言的基本符号 不能被分解为更小的单位,产生式的组合必须完全由终结符组成

非终结符 是可以被替代的符号

< >     : 内包含的为必选项。
[ ]     : 内包含的为可选项。
{ }     : 内包含的为可重复0至无数次的项。
|       : 表示在其左右两边任选一项,相当于"OR"的意思。
::=     : 是“被定义为”的意思
"..."   : 术语符号
[...]   : 选项,最多出现一次
{...}   : 重复项,任意次数,包括 0 次
(...)   : 分组
|       : 并列选项,只能选一个

ABNF 是对bnf 的扩充 写为

 规则 = 定义 ; 注释 CR LF  

更多参考 https://www.jianshu.com/p/15efcb0c06c8

abnf表示四则运算

Expr   = Term   *Sum   ; 继续绕圈子, *Sum 有或者没有, 先写求和是有原因的
Term   = Factor *Mul   ; 再写乘积, *Sum 不匹配, 就尝试乘积
Sum    = SumOp  Term   ; 求和的运算, 有运算符必定要有后续表达式
Mul    = MulOp  Factor ; 乘积的运算,
Factor = Num /         ; 引向终结
         "(" Expr ")"  ; 括号永远都在

Num    = 1*(0-9)      ; 数字, 这可以是独立的终结符
SumOp  = "+" / "-"    ; 加或者减, 可以叫做求和, 小技巧
MulOp  = "*" / "/"    ; 乘或者除, 可以叫做乘积

更多参考 https://wizardforcel.gitbooks.io/go-blog-in-action/Chapter07.html

发表评论

您的电子邮箱地址不会被公开。