2009-01-27 35 views
1

如果您的基本布爾字符串字段具有足夠簡單的架構,那麼該如何去編寫C++中的代碼生成器。 如果你曾經寫過,你是如何開始的。文章/建議表示歡迎。如何編寫自定義IDL的代碼生成器?

編輯:請注意,這不是標準的CORBA idl。

+0

你想要生成什麼?如果你說'IDL',我想'CORBA'。爲什麼不使用現有的發生器/ CORBA編譯器? – 2009-01-27 07:52:52

回答

0

Comet是實現COM的不錯的庫。

1

總結:

  1. 轉換的東西手,
  2. 複製到輸出字符串文本,然後
  3. 與循環和變量,而不是固定的名字概括。

這是TDD解決一個特別好的問題 - 通過建立與太簡單測試的框架,如CPPUnit的(或one of many alternatives)只是確保你可以加載一個文件,並寫入重複的內容開始他們出去了。

非常增量地接近解決方案 - 獲得一些簡單和一般的輸出,通過測試來確認它的工作原理,然後添加更復雜的變體。例如:首先處理單個參數功能。

對於複雜度適中的代碼,只需使用標準C++ ostream類的一組輸出語句,這將允許您編寫大量代碼混合文字與任何變量。

0

不幸的是,您的問題缺乏關於您究竟想要生成什麼的細節。不過,我會採取刺探的方式,並建議您看看C++助推庫精神(http://spirit.sourceforge.net)。藉助Spirit,您可以創建解析器。因此,假設你已經爲你的DSL(領域特定語言 - 你的IDL)編寫了一個靈魂分析器,你將在解析你的IDL文件後得到一個AST(抽象語法樹),你可以使用訪問者模式並創建合適的訪問者你可以生成你需要的任何輸出,例如生成代碼。

相關問題