English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

老師出的題目: 執行時輸入一串數字(可包含運算元,整數,關鍵字),然後按Enter,程式會分析你所輸入的每一個字是屬於整數,運算元,還是關鍵字.
範例:
當我輸入 while (123<456) do 後按 Enter,螢幕要秀出
while 關鍵字
( 一般運算子
123 整數
< 關係運算子
) 一般運算子
do 關鍵字
以上是範例.像這種的程式觀念是什麼,要怎麼寫呢?
以下是老師給的描述:
整數: 例如123
實數: 例如12.34(兩個整數之間有小數點)
關鍵字: 例如 int, float, read, write, if, else, endif, while, do
數學運算子: 例如 + - * / %
關係運算子: 例如 := ; : , # ( ) { }

2007-02-01 10:33:28 · 2 個解答 · 發問者 ? 3 in 電腦與網際網路 程式設計

2 個解答

可以一次讀一行,或是一次抓一個字元
但是這種parse的題目沒有其他方法
只能慢慢去分析他

首先,讀一個字元
會有以下幾種可能:
1) 英文字: 繼續讀到不是英文字再停下來
 然後到關鍵字裡比較哪個關鍵字符合
 (strcmp字串比對,當然如果你要做更精緻一點,記得考慮大小寫)
2) 數字,跟英文字一樣,一直讀到非數字就停下來
 (當然中間要允許一個小數點)
3) +-*/%:=;#(){}: 這些就相對簡單一點,可以直接判斷
4) 空白要記得濾掉

大概就是這種方法
假設你一次只有讀一個char,用的指令應該是getchar
如果要將讀到的char放回buffer,指令式ungetc
如果一次讀一行的話就沒這問題了
對新手來說程式也可能較好處理

2007-02-01 13:46:35 · answer #1 · answered by 智強 3 · 0 0

這種lexical analysis 不建議用土法煉鋼的一個一個token作比對 建議你去看一本lex&yacc 這本O`REILLY出版的書 你會發現寫這種分析程式使用這兩個tools真的會非常輕鬆

2008-04-22 21:27:05 · answer #2 · answered by no nickname 2 · 0 0

fedest.com, questions and answers