[英]Parsing multiple C source files
我有多個C源文件和相應的頭文件。 我正在嘗試使用編譯器(例如ANTLR)來解析這些文件。 在ANTLR解析器語法中,您可以使用
@parser::includes
{#include"a.h"}
您可以開始解析第一個文件,例如
CommonTree tree = Parser.start("a.c");
解析器將解析頭文件
a.h
但是如果您有多個源文件egbc,cc等及其各自的頭文件,則如何解析文件。
C是要解析的小豬---令牌的語義類型取決於它被聲明為什么。 考慮:
T(*b)[4]
如果T是類型名稱,則這是一個變量聲明。 如果是標識符,則為函數調用。 為了解決這個問題,任何希望實際工作的C解析器都必須保留完整的類型環境,這意味着它必須是C編譯器中令人討厭的一大塊。
有用於C的ANTLR解析器可以正確處理所有這些問題,但是它們使用起來並不容易,我對它們沒有任何經驗,因此不能在此處發表評論。
相反,您可能想看看使用外部工具將C解析為更易於處理的內容。 gcc-xml就是這樣一種; 它使用gcc本身來解析源文件,然后吐出更易於處理的XML。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.