我正在執行兩種語言L1和L2的解析和表達式評估。 重要的是,L1可以作爲單獨的語言使用,也可以作爲L2的一部分使用,L2僅包含幾個關鍵字,這些關鍵字在L1中不存在。是否可以使用爲某種語言開發的FsYacc解析器作爲其他語言解析過程的一部分?
我已經樂星做 - >解析 - > AST生產 - > AST處理過程L1和用於此F#與FsLex,FsYacc工具。
是否可以使用已經開發的解析過程(我的意思是令牌,在L1解析器定義AST生產)解析另一種語言L2中?
AST:L1的AST將被用作L2的一部分,並且它將被用於相同的AST處理過程。
FsLex Lexer:對於這兩種語言而言,可能都是通用的,我只需要在L1詞法分析器中包含若干缺少關鍵字即可。但是,如果可以爲L1和L2分別使用詞法分析器,並且參考L2詞法分析器中的L1,那麼會很好。
FsYacc解析器:我不喜歡'copy-C'所有的L1解析器代碼到L2中。 在L1語法分析器中定義的L2,令牌和AST數據生成中是否有引用的方法?
預先感謝
謝謝 - 將會閱讀文章 – Vitaliy 2011-06-09 12:31:35
我認爲文章中描述的yacc解析器的問題與我的情況無關:L1可以是單獨的語言,L2只是用一些關鍵字擴展L1,L1和L2沒有衝突的規則和關鍵字的含義。我更感興趣的是如何將一種語言的解析器(令牌和AST生產)用於多種fsy文件(更好的是如何分離)解析器(令牌和AST生產) – Vitaliy 2011-06-10 06:35:07
即使您的問題不是病態,它與您的問題有關。沒有設計成yacc的語法組合機制,因爲它不能支持一般情況。 – Joh 2011-06-10 08:17:50