语法图

语法图又称铁路图,是EBNF(扩展巴克斯范式)的图形化表示 从左边界开始沿着轨道去到右边界。 沿途,你将在圆框中遇到的是字面量,在方块中遇到的是规则或者描述。 任何沿着轨道能走通的序列都是合法的。 任何不能沿着轨道走通的序列都是非法的。 /* a simple program in EBNF − Wikipedia */ program ::= 'PROGRAM' whiteSpace identifier whiteSpace 'BEGIN' whiteSpace (assignment ";")* 'END.' assignment ::= identifier ":=" ( number | identifier | string ) string ::= '"' [A-Z0-9_]+ '"' identifier ::= [A-Z] [0-9A-Z]* whiteSpace ::= [#x20]

<span title='2022-07-07 18:00:27 +0800 +0800'>七月 7, 2022</span>

EBNF

EBNF 扩展巴科斯-瑙尔范式(EBNF, Extended Backus–Naur Form) 是表达作为描述计算机编程语言形式语言(是用精确的数学或机器可处理的公式定义的语言) 的正规方式的上下文无关文法 的元语法(metalanguage)符号表示法。它是巴科斯范式(BNF) 元语法符号表示法的一种扩展。 简单的理解就是用来描述语言词法和语法规则的语言 ISO/IEC 14977标准 基本形式 LEFT=RIGHT 意思为LEFT可由RIGHT推导而来,LEFT为非终结符,RIGHT可以为非终结符也可以为终结符; 非终结符 简单的理解就是可以继续推导的符号 终结符 不可被推导的符号 符号 符号 含义 示例 = 定义 CharA=“a”; 代表CharA由字母a推导而来 , 连接符 a,b,c 代表abc是挨着的 ; 结束符 CharA=“a”; 代表 CharA这条语句定义结束 | 或者 digit = “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”; […] 可选,出现0次或1次 number = ["-"|"+"],digit 可匹配 1 -1 +1 … {…} 重复,出现>=0次 number = ["-"|"+"],digit,{digit} 可匹配 1 -1 +1 11 … (…) 分组 number = ("-"|"+"),digit 符号必须添加,可匹配 -1 +1 … “…“或者’…' 终结符,单引号主要是一些特殊情况,比如双引号 “a"或者’a’ 由单或双引号引起来的部分是终结符,就是代表字母a,不可继续推导 (* … *) 注释 (*我是注释*) 注释不参与定义 ?…? 表示其中的内容具有特殊含义,对该含义的定义不在 EBNF 标准之内,有使用者来决定 space = ? US-ASCII character 32 ?; - 排除(将右边的内容从左边进行排除) string= allVistableChar - '”’ 表示在allVistableChar里排除"字符 示例 只允许赋值的简单编程语言可以用 EBNF ...

<span title='2022-07-05 15:31:12 +0800 +0800'>七月 5, 2022</span>