我试图创建一个AST和漂亮的打印它。我正在解析C语言的部分内容。但是,当我必须表示一个空语句时,即
{}我完全被困住了,因为我不能简单地创建一个包含类似内容的新数据。或者是在下列情况下
{{}}这相当于
SScope({})从技术上讲,我的问题是,我怎么能漂亮地印在哈斯克尔的卷边上?所以当我收到
{}我想要完全一样的打印,就像
{}那。我会做这样的事情:
data Stmt = {}和其他数据元素一样,但我无法做到这一点。有什么建议吗?
发布于 2021-05-14 21:41:17
您需要区分语言的词法组件(大括号等)和用来表示语法结构的Haskell数据类型。
Haskell方面应该有类似的
data Stmt =
CompoundStmnt [Stmt]
| ValueStmt Identifier Expression
| -- And so on for all the other types of statement you want.然后定义一个解析器来识别花括号,并定义一个漂亮的打印机,它打印出被花括号包围的值。
https://stackoverflow.com/questions/67540442
复制相似问题