詞語編譯提示
⑴ 語意錯誤是什麼呢
語義錯誤指寫作中由於對詞語的含義理解不清造成的語言錯誤,它就是語法上沒錯誤,編譯可以通過,也可以運行,也可以得到結果,但結果不符合實際,是錯的。這就是語義描述錯了。語文里,我們說「雪是白的」是對的,如果說「雪是黑的」,就是語義錯誤。
一般的程序錯誤,粗略一點分的話,可以大致分為語法錯誤和語義錯誤。語法錯誤可以看作是編碼出現了違反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 。
運行結果: