c語言 詞法分析

2021-07-05 09:19:33 字數 864 閱讀 1879

參考《c陷阱與缺陷》

一、c語言對符號的分析方法歸納為乙個很簡單的規則:

每乙個符號應該包含盡可能多的字元,也就是說,編譯器將程式分解成符號的方法時,從左到右乙個字元乙個字元地讀入,如果該字元可能組成乙個符號,那麼再讀入下乙個字元,判斷已經讀入的兩個字元組成的字串是否可能是乙個符號的組成部分;如果可能,繼續讀入下乙個字元,重複上述判斷,直到讀入的字元組成的字串已不再可能組成乙個有意義的字元。這個處理策略有時被成為「貪心法」

kernighan與ritchie對和這個方法的表述如下,「如果(編譯器的)輸入流截止至某個字元之前都已經被分解為乙個個符號,那麼下乙個符號將包括從該字元之後可能組成乙個符號的最長字串。」

二、舉例

1、a---b問題

a---b

與表示式

a -- - b

的含義相同,而與

a - -- b

的含義不同。

2、y = x/*p 問題

y = x/*p;		/* p指向除數 */
根據**中注釋的意思,該語句的本意似乎是用x除以p所指向的值,把所得的商再賦給y;

而實際上,/*被編譯器理解為一段注釋的開始,編譯器將不斷地讀入字元,直到*/出現為止。也就是說,該語句直接將x的值賦給y,根本不會顧及到後面出現的p。

應該改寫為:

y = x / *p;		/* p指向除數 */
或者更清楚些:

y = x/(*p);		/* p指向除數 */

c語言詞法分析器

include include include void main void int reserver char void main void if output fopen output.txt wt null fprintf output,4s t 8s t 16s t 4s n 位置 符號型別...

C語言詞法分析器

include include include include define len 180 int syn,p,m,n char token 10 ch char keyword 32 struct wordline 定義結構體 struct wordline creat struct wordl...

小C語言 詞法分析程式

time limit 1000ms memory limit 5000kb submit statistic problem description 小c語言文法 1.程式 2.宣告序列 宣告序列 宣告語句 宣告語句 空 3.宣告語句 識別符號表 4.識別符號表 識別符號 識別符號表 識別符號 5....