有人可以向我解釋這個嗎?特別的區別:什麼是重入式解析器?
http://github.com/whymirror/greg和http://piumarta.com/software/peg/
後來的前者是重入版本。
有人可以向我解釋這個嗎?特別的區別:什麼是重入式解析器?
http://github.com/whymirror/greg和http://piumarta.com/software/peg/
後來的前者是重入版本。
最簡單的重入式解析器不使用全局變量,因此可以同時有多個活動實例(不一定與線程相關,但這是我懷疑的主要用例)。
但是,在更復雜的用例中,您可以使用解析器來解析相同源文檔中的多種語言。例如,考慮一個JSP解析器,它必須在同一個文件中解析Java代碼和HTML。與其製作一個涵蓋兩種語言的巨大解析器(可能非常不切實際),您可以製作兩個解析器並在它們之間切換。但是,如果您的解析器在它們之間使用全局狀態切換可能會有問題。重入式語法分析器允許您輕鬆地在語法分析器之間切換,無論是以協程的形式,還是簡單的「解析器 - 調用解析器-B用於嵌入式代碼然後返回」的情況。
編輯補充:
如果你想重入解析的極端形式,看看解析器組合(如秒差距)這裏的「語法」每個子表達式一個單獨的解析器完全。通過組合大量的小型分析器來構建一個大型的分析器。
要折返,計算機程序或 例行:
- 必須保持無靜電(或全球)非恆定的數據。
- 不得將地址返回到靜態(或全局)非常數數據。
- 只能在由調用者提供給它的數據上工作。
- 不能依靠鎖定單身資源。
不一定與線程安全性有關,但解析文檔中的多個語法。