簡體   English   中英

從語法生成解析器代碼以驗證字符串

[英]Generate a parser code from a grammar to verify a string

我有一個語法,我想創建一個以該語法為參數的程序,並生成輸出代碼(使用C,Java,Python等)。 因此,當我們編譯/運行生成的代碼並將其傳遞給字符串/短語時,它應檢查此字符串是否已通過語法驗證。

什么是正確的方法?

更新:添加語法示例

S  -> id ':=' E
E  -> T A
A  -> '+' T A | empty
T  -> F B
B  -> '*' F B | empty
F  -> '(' E ')' | id | number

這不是一項瑣碎的任務,甚至沒有一個正確的解決方案。 我建議您閱讀該課程的講義,您應該為此課程准備作業並使用那里介紹的技術。

如果語法是上下文無關的 ,則可以(將其轉換為Chomsky范式后)使用Cocke-Younger-Kasami算法來檢查它是否可以產生給定的單詞。 該算法易於實現(少於滿是Python代碼的屏幕),但需要花費大量時間。 它主要用於理論計算機科學。

實際的編譯器使用更快的算法,但是它們對語法有附加要求。 查看您的講座中介紹的內容。 如果您想了解它在現實世界中的工作原理,可以研究現有的解析器生成器,例如GNU Bison 它是免費軟件,因此您可以自由研究其源代碼。

祝好運!

暫無
暫無

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

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