由於性能原因,我將C#庫移植到C++。在正常操作期間,這個庫需要解析大約150,000個數學表達式(認爲excel公式),平均長度小於150個字符。解析C++中許多小文本的最佳解析器生成器?
在C#版本中,我使用了GOLD解析器來生成解析代碼。它可以在一秒鐘內解析所有150'000個表情。
因爲我們在考慮擴展我們的語言,所以我認爲向C++的轉變可能是改變ANTLR的好機會。我已經將(簡單)語法移植到ANTLR上,並生成了C代碼。解析150'000個表達式需要12秒鐘,因爲對於每個表達式,我需要創建一個新的ANTL3_INPUT_STREAM,令牌流,詞法分析器和解析器 - 至少在3.4版中,沒有辦法重用它們。
我很感激有人可以給我一個推薦什麼使用,而不是 - 黃金當然是一個選項,雖然生成C++或C代碼似乎比C#品種複雜得多。我的語法是LALR和LL(1)兼容。最重要的問題是解析小輸入的性能。
低至400毫秒(從12秒)與提升精神 - 感謝一堆! – user816098
如果您使用VC++ 2010編譯器,也可以嘗試AX。 –