我有一個需要支持以下品牌的參數的命令行應用程序:最有效的方法來解析小,具體參數
- 所有:返回的一切
- 搜索:返回第一個匹配搜索
- 所有*搜索:返回匹配的一切搜索
- X *搜索:返回第一個X匹配搜索
- 搜索#Y:返回第Y匹配搜索
其中搜索可以是單個關鍵字或空格分隔的關鍵字列表,由單引號分隔。關鍵字是一個或多個字母和數字的序列 - 沒有別的。
幾個例子可能是:
- 2 * foo的
- 吧#8
- 所有* '富巴'
這聽起來剛好夠複雜,柔性/野牛來但是應用程序可能會經常需要像這樣解析字符串,而且我覺得(因爲沒有涉及計數)完全成熟的解析器會導致完全太多的開銷。
你會推薦什麼?一連串的字符串操作?幾個強大的子模式捕獲正則表達式? 是實際上對於「真正的」解析器有一個似是而非的論點?
這可能是需要注意的是這個僞語法語法也不會有變動有用的,因此,如果代碼就低於奇妙保持能力,我不會哭。這完全在C++中,如果這有所作爲。
謝謝!
我會說:「這聽起來很簡單*足以手動編碼。」沒有lex/yacc/regexp,我做了比這更復雜的解析。 – Dan 2009-12-14 07:58:08
我喜歡你的觀點 - 事實上,我已經退後一步,再次看到問題,現在看到簡單的字符串操作可以輕鬆解決野獸的問題。 – 2009-12-14 08:25:10