词语编译提示
⑴ 语意错误是什么呢
语义错误指写作中由于对词语的含义理解不清造成的语言错误,它就是语法上没错误,编译可以通过,也可以运行,也可以得到结果,但结果不符合实际,是错的。这就是语义描述错了。语文里,我们说“雪是白的”是对的,如果说“雪是黑的”,就是语义错误。
一般的程序错误,粗略一点分的话,可以大致分为语法错误和语义错误。语法错误可以看作是编码出现了违反C语言规则的错误,一般编译或者链接时,都会报错的。而语义错误,也可以叫做逻辑错误,也就是说你的代码完全符合C语言的规范,不会出现编译/链接的错误,但是,在逻辑上有错误。
对词义理解不清有三种情况:
1、对词语的概念义理解不清。例如:混淆了“诞辰”与“诞生”的意义,就出现了“纪念鲁迅先生诞辰一百周年”的错误说法。
2、对词语的修辞义理解不清。例如:对“严肃”一词的感情色彩理解不清,就出现了“还有几名日本兵,提着上了刺刀的步枪,严肃而呆板地站在伪警后面”的错误描写。
3、对词语的语法意义理解不清。例如对“逃荒”这个动词的不及物性没有掌握,就出现了“全村有三百户,逃荒了二百户”的错误句子。此外,常见的生造词语,含义令人难以理解,也属于语义错误。例如:“这是令人感奋的,但我总是提不起兴趣来”,“奋感”是生造的词语,难以被人接受。
⑵ 编译原理-句型、句子、短语、直接短语、句柄、素短语、最左素短语
在进行语法分析的时候,有时候会对这些词语的概念不清晰,这里我们就详细归纳总结一下。
可以看出这个里面,最需要理解的概念就是短语,其他大部分概念都是在短语基础上延伸的,从概念上可以看出:
假设有一个文法
针对文法的一个特定句型 (Sd(T)db) , 其推导过程如下:
这个句型 (Sd(T)db) 对应的 CFG 分析树如下:
那个这个句型 (Sd(T)db) 有多少个短语呢?
还记得短语的定义么, S ⇒* αβδ , αβδ 代表句型就是这里的 (Sd(T)db) 。
因此这个句型 (Sd(T)db) :
算法非常简单,就是通过分析树的后序遍历,先将子树的叶节点从左到右排合并成字符串(即一个短语),然后用它代表子树的根节点的值,再和与子树根节点同一层节点值合并,得到新的短语。就这样从分析树的最底层,一路合并到分析树的根节点,就能得到所有的短语了。
通过递归的方法,获取短语列表 phraseList , 直接短语列表 directPhraseList 和 素短语列表 plainPhraseList 。
运行结果: