1
我正在爲Clite實現一個語法分析器作爲編程語言類的任務。 我使用遞歸下降解析器和match()函數,該函數將輸入掃描器中的字符串作爲參數,並檢查它是否爲預期的標記,否則返回錯誤消息。定義集C++
我一直在試圖爲字母表聲明一個集合,所以我不必匹配字母表中的每個字母。事情是這樣的:
void letter(){
if(currentToken==LETTER){
match(LETTER);
}
else
error();
}
我試着用#定義,但意識到那不是工作
#define LETTER "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
還與工會或typedef的嘗試,但不能這樣做。有任何想法嗎?
感謝您的提示,所以我怎麼能實現'包含'' – 2013-04-30 01:09:52
@Mario Montoya使用std :: set(如果您將對集合進行多次比較)或strchr/strstr(如果您只會做一個,例如,以避免需要把它變成一個集合的開銷) – Patashu 2013-04-30 01:19:49
我解決了我的問題與strbrk創建一個字符數組鍵和比較我的輸入與它。如果我的輸入包含在鍵中它返回true。 感謝您的幫助 – 2013-04-30 02:09:06