語法分析組合子

在計算機編程中 語法分析組合子 是一個 高階函數 ， 它接受幾個的語法分析器作爲輸入 ， 並返回一個新的語法分析函器作爲其輸出 。 在這個上下文中 ， 語法分析器 是一個函數 ， 它接受字符串作爲輸入 ， 返回的一些結構作爲輸出 ， 通常爲 分析樹 或一組索引表示在字符串中成功停止分析的位置 。 分析器組合子使用 遞歸下降分析 戰略 ， 提倡模塊式建造和測試 。 這種分析技術是所謂的 組合分析 。 使用組合子構建的分析器易於構造 、 可讀 、 模塊化 、 結構良好且易於維護它們被廣泛地用於 領域特定語言 （ 如數據庫的自然語言接口 ） 的編譯器和處理器的原型設計中 ， 在這些語言中 ， 複雜多樣的語義操作與語法處理緊密集成 。 1989年 ， Richard Frost和John Launchbury演示了使用語法分析組合子構造的自然語言解釋器 。 Graham Hutton在1992年也使用了高階函數進行基本解析 。 S.D. Swierstra在2001年還展示瞭解析器組合器的實用方面 。 在2008年 ， Frost 、 Hafiz和Callaghan用Haskell中描述了一組語法分析組合子 ， 它們解決了長期存在的通用左遞歸的問題 ， 它也是一個完整的 ， 只需要多項式時間 、 空間的自頂向下解析工具 。