首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Haskell中的Curly Braces创建数据

用Haskell中的Curly Braces创建数据
EN

Stack Overflow用户
提问于 2021-05-14 20:10:09
回答 1查看 258关注 0票数 0

我试图创建一个AST和漂亮的打印它。我正在解析C语言的部分内容。但是,当我必须表示一个空语句时,即

代码语言:javascript
复制
{}

我完全被困住了,因为我不能简单地创建一个包含类似内容的新数据。或者是在下列情况下

代码语言:javascript
复制
{{}}

这相当于

代码语言:javascript
复制
SScope({})

从技术上讲,我的问题是,我怎么能漂亮地印在哈斯克尔的卷边上?所以当我收到

代码语言:javascript
复制
{}

我想要完全一样的打印,就像

代码语言:javascript
复制
{}

那。我会做这样的事情:

代码语言:javascript
复制
data Stmt = {}

和其他数据元素一样,但我无法做到这一点。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-14 21:41:17

您需要区分语言的词法组件(大括号等)和用来表示语法结构的Haskell数据类型。

Haskell方面应该有类似的

代码语言:javascript
复制
data Stmt = 
    CompoundStmnt [Stmt]
    | ValueStmt Identifier Expression
    |  -- And so on for all the other types of statement you want.

然后定义一个解析器来识别花括号,并定义一个漂亮的打印机,它打印出被花括号包围的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67540442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档