gpt4 book ai didi

用于定义编程语言的 Haskell

转载 作者:行者123 更新时间:2023-12-01 10:08:51 24 4
gpt4 key购买 nike

我曾在谷歌上搜索过,试图找到一个使用 Haskell 定义简单语言的简单示例,但无济于事。

我确实在 stackoverflow 上找到了这篇文章,给出了一个类似的例子,但是当我实现它时,它似乎没有工作:

Haskell - How to best to represent a programming language's grammar?

an example expression in this language would be:

if true then x else (if false then y else true) Your Haskell data type would look something like this:

data Expr = Var String
| Lit Bool
| If Expr Expr Expr

然而,当我将 if true then x else (if false then y else true) 作为输入输入控制台时,它提示“x”不可解释。它也不喜欢 true 和 false。

编辑:最后我也确实导出了“show”

最佳答案

创建编程语言有几个常见的步骤(当然还有其他步骤):

  • 将程序文本解析成语法树
  • 遍历语法树,用它做点什么(解释、编译、收集统计数据)

您显示的data Expr 将是语法树的一部分。 if true then ... 是程序文本。您需要某种方式从文本到树:您需要一个解析器。

或者,您可以使用 Haskell 作为您的解析器,并将语法树编写为 Haskell 代码:

If True "it's true!" (If False "uh-oh" "it's false")

关于用于定义编程语言的 Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917941/

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