2
我想構建一個可以轉換爲現有語言(如Python,SQL)的特定於域的語言。我儘量避免構建一個完整的編譯器,並且已經研究了Xtext和Xpand。它們看起來似乎是合理的,因爲Xtext將用於設計語法並生成分析樹,Xpand將使用分析樹來生成現有語言的代碼(如果我錯了,請糾正我)。如何將我的DSL轉換爲現有的編程語言?
你對此有什麼看法?你認爲有更好的替代XText & Xpand我可以用來實現我的目的?
我想構建一個可以轉換爲現有語言(如Python,SQL)的特定於域的語言。我儘量避免構建一個完整的編譯器,並且已經研究了Xtext和Xpand。它們看起來似乎是合理的,因爲Xtext將用於設計語法並生成分析樹,Xpand將使用分析樹來生成現有語言的代碼(如果我錯了,請糾正我)。如何將我的DSL轉換爲現有的編程語言?
你對此有什麼看法?你認爲有更好的替代XText & Xpand我可以用來實現我的目的?
您可能會考慮DMS Software Reengineering Toolkit。
它被設計爲提供通用程序(例如,任意語言或DSL)解析,分析和轉換。它通過上下文無關語法自動生成AST,爲構建符號表和進行流分析提供支持,具有源到源轉換以實現翻譯,以及AST完整的漂亮打印機。所有這些機制的目的是盡最大的努力來構建和支持強大的工具。 (我是其背後的主要人物,我相信DMS爲此目的比Xtext更成熟,已經使用了13年多了。)YMMV)。
您基本上要求可以用來構建源到源編譯器的庫或工具。這涵蓋了廣泛的可能性。我認爲,爲了得到一個有用的答案,你應該描述源和目標編程語言以及你計劃編寫編譯器的編程語言。 – Heatsink
@Heatsink:如果他要按照你指定的方式縮小他的問題,並選擇用任何通用語言(比如C,C++,C#,Java,......)編寫他的翻譯者,他仍然可以獲得大量的庫或工具,那麼如何提供幫助?他被問到的是是否存在比Xtext更好的東西,並且大多數更通用的答案會失敗,因爲它們沒有解決分析樹的實際構建,或者爲代碼生成提供特定的支持。 –