关于Backus-Naur Form巴克斯诺尔范式和扩展巴克斯范式的知识点和相关词语中英文对照
syntax | 语法 | 强调的是编程语言的组形式,例如一个句子中会包含表达式、陈述还有各种单元等等 |
semantics | 语义 | 强调的是这个编程语言的实际含义,例如While的语义为:当Boolean表达式为true时,内部的陈述就会被执行;否则就会跳过while段 |
recognizer | 识别器 | 当已知一个句子的时候,可以识别它是否满足当前规则 |
generator | 生成器 | 当已知规则的情况下,可以生成任意满足当前规则的句子 |
lexeme | 词素 | 例如, ‘+’, ‘-‘, ‘*’, ‘/’, ‘=’, ‘1’, ‘;’ |
token | 词素的分类 | 例如,可以把1, 3, 10分为int_literal类 |
Backus-Naur Form | 巴克斯诺尔范式 | 简称,巴克斯范式 |
nonterminal symbol | 非终结符 | 在<>中间的字符 |
terminal symbol | 终结符 | 没有<>包围的字符 |
left-hand side(LHS) | 左边 | 在巴克斯范式中,一般是起始符,即在->或=左边的部分,right-hand side(RHS)同理 |
identification | 标识符 | 变量的名字,例如,int a,b,c; 中的a,b,c |
derivation | 推导 | 用终结符代替所有非终结符的过程 |
leftmost derivation | 从RHS的最左边开始推导 | |
parse tree | 语法分析树 | 或者语法解析树 |
ambiguity | 歧义 |
由于两个或以上非终结符出现在同一个式子当中,从不同位置开始推导会产生不一样的计算顺序。 解决方法:把优先级高的放入抽象概念中。抽象即可理解成一个非终结符,因为它里面的内容还不确定,所以还是很抽象的。 |
operator associativity | 操作符的结合性 | 如果编程语言是LHS的,那么它就是有left associativity的 |
[] | 可选表达式,可以使用[]中的表达式或者不使用 | opt |
(…|…|…) | 在括号里面任选其一 | one of |
{} | {}中的内容可以使用0到多次 |
版权声明:本文为anthonyhoo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。