我正在嘗試創建一個應用程序來搜索我公司的ColdFusion代碼庫。我希望能夠進行智能搜索,例如:找到一個函數被定義的位置(並且在所有函數被調用的位置都沒有)。爲了做到這一點,我需要解析ColdFusion代碼來識別函數聲明,函數調用,數據庫查詢等。ColdFusion代碼解析器?
我已經研究過使用lex和yacc,但我從未使用過他們之前和學習曲線似乎非常陡峭。我希望有一些東西可以使用。我的另一個選擇是難以維護的正則表達式意大利麪代碼,我想避免它。
我正在嘗試創建一個應用程序來搜索我公司的ColdFusion代碼庫。我希望能夠進行智能搜索,例如:找到一個函數被定義的位置(並且在所有函數被調用的位置都沒有)。爲了做到這一點,我需要解析ColdFusion代碼來識別函數聲明,函數調用,數據庫查詢等。ColdFusion代碼解析器?
我已經研究過使用lex和yacc,但我從未使用過他們之前和學習曲線似乎非常陡峭。我希望有一些東西可以使用。我的另一個選擇是難以維護的正則表達式意大利麪代碼,我想避免它。
我用source to CFEclipse,因爲它是開源和具有解析器。如果我們銷售/重新分配它,不確定這種合法性,但我們只是將它用於內部工具。
我相信它使用[MIT許可證](https://github.com/cfeclipse/cfeclipse/blob/master/org.cfeclipse.cfml/License.txt)。 – John 2014-04-17 20:52:01
沒有。由於ColdFusion更像腳本而不是代碼,我想可能很難爲它編寫解析器。
ColdFusion的生成器可以解析CFM/CFC在Eclipse的輪廓。也許你可以研究CF Builder插件是否可以做你想做的事情。
類似腳本並不意味着很難爲其編寫解析器。任何語言都由一組字符串表示。解析器解析由構成解析器的過程代碼隱含描述的字符串集合,或者如果設計的話,則由語法規則明確地驅動解析器。將ColdFusion定義爲語法驅動的解析器生成器更重要的是對ColdFusion進行很好的描述。 – 2009-08-27 03:46:51
真正的漢語語言寫作解析器通常是困難的,因爲它們包含Lex和Yacc往往不處理好結構,例如,對的langauge不是LALR(1)。由於其類似於XML的風格,ColdFusion可能比一些更容易。
如果您想快速構建複雜的解析器,可以考慮使用我們的具有GLR解析支持的我們的 DMS Software Reengineering Toolkit。
如果你想避免寫你自己的或黑客所有這些正則表達式,你可以考慮我們的Source Code Search Engine。它具有語言敏感的解析器,可以非常快速地搜索非常大的源代碼庫。它的「語言敏感」解析器之一是AdhocText,它被設計來處理「通用」編程語言,比如你可能在隨機編程書中找到的語言;它甚至可以理解像ColdFusion這樣的類似XML的標籤。您可以從提供的鏈接下載評估版來嘗試。
編輯3/4/2010:添加到SCSE一項最新功能是標記定義的能力,並分別使用。這將解決OP希望找到函數定義而不是所有的調用。
重新設計工具包可能確實是一個很好的開始工具,它只是一個恥辱,它沒有在[開箱即用的前端]之間列出CF支持(http://www.semanticdesigns。COM /產品/前端/ index.html的?首頁= DMSDomains)。 – CrazyPyro 2011-02-22 19:25:08
@CrazyPro:是的,這確實是一個恥辱,因爲那樣你根本就不必構建解析器。但是我們只能在有限的預算中做到這一點: - }關鍵是,如果您必須構建自己的解析器,這是一個很好的基礎。 – 2011-02-22 20:53:03
硤,這是我一直感興趣成也(和我想要的東西融入CFE),所以如果你所做的任何有用的進展我想知道? – 2009-10-18 13:43:05
@Peter Boughton:其實我是代表一位同事問的。在下面看到我的答案 - 他使用源代碼中的解析器來CFEclipse。我不知道這樣做對於重新分配是否完全合法,但是我們將它用於內部開發工具。 – Kip 2009-10-18 18:34:24
那麼你需要檢查許可證的準確字眼,但是如果它是從EPL代碼(CFEclipse源代碼)派生的,那麼它也只需要分發一個EPL許可證。 但是,它是目前的CFE解析器,我想創建一個替代品,所以除非你對它進行了大的修改,否則它不會是我想要的。 – 2009-10-18 19:02:28