兩個斷點定位問題
用兩個斷點,不斷縮少出現bug範圍,定位錯誤位置.
方塊為中文字元佔2個字元
對於上次方塊佔位的時候,有空心方塊
解決的方案是:以前是合起來,再分開避免的問題
現在直接用 showbrick 直接不畫空心方塊 就不做什麼就可以了
這樣直接showbackground showbrick 就可以了
對於詞法分析器我們先從 單詞數量開始.
這是一道平時很常見的習題或者面試題
hello world. i love you.
對以上文字(以空格作為單詞分隔),統計單詞個數
下面比較簡單的版本:
這個版本是有bug的 :比如中間加空格,後面加空格都會影響結果。#include
"stdafx.h"
#include
#include
intwordnum
(char
*str)
str++;}
return
++ncount;
}int
main
(void
)
所以就知道,不能僅僅以空格為評判標準
就像我們怎麼知道這是乙個單詞,以人的直觀角度去判斷
那就是遇到空格前面是什麼狀態 如果是非空格 那麼計數加一,如果是空格那麼不計數
講一下演算法:
然後根據圖去寫程式:
多餘結束的時候我就圖示捨去了
判斷結束是否要加上1 就是判斷『\0』前面是否為非空格如果是那麼計數加一
以上就是狀態機(又稱自動機,有限狀態的自動機)#include
"stdafx.h"
#include
#include
#define state_start 0
#define state_blank 1
#define state_nonspace 2
intwordnum
(char
*pszcontent)
else
}else
if(nstate == state_blank)
}else
if(nstate == state_nonspace)
} pszcontent++;}
if(nstate==state_nonspace)
}return ncount;
}int
main
(void
)
常常用於詞法分析過程製作詞法分析器
詞法分析就是將單詞分類。比如c語言的字元,由多種分類:
當然有人會說0x1234 分隔符號還有其他等問題 ,今天講的初級版本就不涉及了。
我們可以將以上版本同時用狀態機器表達出來
對應程式如下
如果不用彩色的化 將printf解鎖,將wirtchar注釋掉就可以了
C 詞法分析器
編譯原理實驗 一 實驗題目 設計 編制 除錯乙個識別一簡單語言單詞的詞法分析程式。程式能夠識別基本字 識別符號 無符號整數 浮點數 運算子和界符 單詞符號及種別表如下 單詞符號 種別編碼 begin1if 2then 3while4do 5end 6l l d 10dd 11 13 14 15 16...
C 的詞法分析器
lexical analyzer.h ifndef lexical analyzer h define lexical analyzer h enum lexical status enum token category struct token class lexical analyzer inl...
C 實現詞法分析器
written by zzg date 11,25,2017 include include include using namespace std string keyword 15 char separater 8 分隔符 char operator 8 運算子 char filter 4 過濾...