簡體   English   中英

如何獲取代碼中使用的函數的名稱

[英]How to get names of function use in code

我將C ++方法的主體作為String獲取,並希望獲取此代碼中使用的所有方法的列表。 哪種工具最適合進行此類解析?

它必須支持所有情況:

opSomeMethod();
someObject.someMethod();
someObject->someMethod();

最好是用Java編寫,但它可能是可以從控制台運行的小型c ++程序。

您可以使用LEX和YACC工具來定義語法和解析字符串。 Lex和Yacc可以閱讀源程序並發現其結構。

再次發現源結構的任務被分解為子任務:

  • 將源文件拆分為令牌(Lex)。
  • 查找程序的層次結構(Yacc)。

Lex幫助編寫程序,其控制流由輸入流中的正則表達式實例控制。 它非常適用於編輯器腳本類型的轉換以及分段輸入以准備解析例程。 Lex源是一個正則表達式和相應程序片段的表。 該表被轉換為程序,該程序讀取輸入流,將其復制到輸出流,然后將輸入划分為與給定表達式匹配的字符串。 識別出每個這樣的字符串后,就會執行相應的程序片段。 表達式的識別是由Lex生成的確定性有限自動機執行的。 由用戶編寫的程序片段按在輸入流中出現相應正則表達式的順序執行。

有關更多詳細信息,請參見LEX的在線手冊

Yacc提供了一種通用工具,用於描述計算機程序的輸入。 Yacc用戶指定其輸入的結構,以及在識別每個這樣的結構時要調用的代碼。 Yacc將這樣的規范轉換為處理輸入過程的子例程。 通常,由該子例程處理用戶應用程序中的大多數控制流是方便且適當的。

有關更多詳細信息,請參見YACC在線手冊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM