gpt4 book ai didi

compiler-construction - Haskell - 如何最好地表示编程语言的语法?

转载 作者:行者123 更新时间:2023-12-03 11:50:45 24 4
gpt4 key购买 nike

我一直在研究 Haskell,我很想在其中编写一个编译器(作为学习练习),因为它的许多固有特性可以很容易地应用于编译器(尤其是递归下降编译器)。

我无法完全理解的是如何以 Haskell-ian 方式表示语言的语法。我的第一个想法是使用递归数据类型定义,但我看不到如何使用它们来匹配语言中的关键字(“if”)。

非常感谢您的想法和建议,

皮特

最佳答案

您使用相互递归的代数数据类型来表示程序,并使用 解析程序解析组合子 .有一百万种口味;您会在 schedule for my class 上找到三篇有用的教程论文。 2009 年 3 月 23 日星期一。他们是

  • Graham Hutton 和 Erik Meijer,Functional Pearl: Monadic parsing in Haskell (1998)
  • 格雷厄姆·赫顿,Higher-order Functions for Parsing (1992)
  • 杰伦·福克,Functional Parsers (1995)

  • Hutton 和 Meijer 论文是最短和最简单的,但它使用单子(monad),这对业余爱好者来说并不明显。但是,它们具有非常好的表达式语法和解析器。如果你还没有 grok monads,Fokker 的教程就是其中之一。

    关于compiler-construction - Haskell - 如何最好地表示编程语言的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/679815/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com