我正在使用新的編程語言,但是我一直對每個人都使用yaxx/lex來解析代碼這一事實感到困惑,但我不是。yacc/lex還是手工編碼?
我的編譯器(已經工作)在C++/STL中被手動編寫,我不能說它很複雜或花費太多時間。它既有某種詞法分析器也有解析器,但它們不是自動生成的。
早些時候,我用同樣的方式編寫了一個C編譯器(不是完整的spec) - 它能夠在1遍中編譯程序,所有這些反向引用都可以解析&預處理 - yacc/lex絕對不可能。
我只是不能說服自己放棄所有這些,並開始潛入yaxx/lex--這可能需要相當大的努力來實現,並可能會引入一些語法限制。
當沒有使用yacc/lex時,是否有我想念的東西?我做了一件壞事嗎?
良好的模塊化設計(例如,詞法分析器和詞法分析器應該完全分離)可以減少這個問題。仍然重要。 – delnan 2010-08-29 11:23:40