我們從哪裏開始從頭開始手動構建CST?或者ANTLR4總是要求lex/parse過程作爲我們的輸入步驟?ANTLR4 - 從非文件輸入生成代碼?
我的程序中有一些視覺元素代表代碼結構。
例如一個正方形表示一個類,而嵌入在該正方形內的圓代表一種方法。
現在我想把它們變成代碼。我如何在運行時(使用ANTLR4.js)使用ANTLR4來做到這一點?大多數ANTLR示例似乎都依賴lexing和解析現有代碼來獲取語法樹。因此,而不是:
input code->lex->parse->syntax tree->output code (1)
我想
manually create syntax tree->output code (2)
(1)
使用。)
編輯也許我誤解了這一點。我是否創建一些自定義數據結構,然後通過它運行解析器?即write structures to some in-memory format->parse->output code (3)
?
ANTLR4不創建任何AST,它只能創建一個CST。如果你想自己建立一個CST,究竟是什麼阻止你這樣做呢? –
@LucasTrzesniewski對不起,我是新手。通過CST,我認爲你的意思是ANTLR稱之爲分析樹。我想要一個AST,因爲這可以讓我使用相同的源碼樹以2種語言(C&JS)讀/寫源文件。但是我不需要同時使用這些項目......一個項目將被寫入另一個項目中......所以沒有什麼能夠阻止我讀取當前項目的源代碼(C _或_ JS),然後輸出因此。 –
@LucasTrzesniewski我可以安全地假設沒有辦法在ANTLR4中手動構建樹(而不是3)嗎?因此,我們必須改爲解析某些字節流以構建它? –