首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在BNFC中有使用空白的方法吗?

在BNFC中有使用空白的方法吗?
EN

Stack Overflow用户
提问于 2013-09-10 21:17:50
回答 1查看 319关注 0票数 1

如何在BNFC定义中使用空格?

例如,假设我想为lambda演算生成一个解析器,其中允许抽象变量列表:

代码语言:javascript
复制
\x y z.x z (y z)

要做的“显而易见”的事情是使用一个有标签的规则,如:

代码语言:javascript
复制
ListAbs . Exp ::= "\\" [Ident] "." Exp ;
separator Ident " "

但是,BNFC默认为剥离空白,因此不起作用。起作用的是使用逗号分隔符。有点丑,但我可以接受.不过,能按空间分开还是很好的。

BNFC中有空白字符类吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-21 11:35:24

可以将空字符串声明为分隔符:

代码语言:javascript
复制
separator Ident ""

实际上,这允许您使用空白(或任何空格字符)作为分隔符:

代码语言:javascript
复制
$ cat test.cf
A . A ::= [Ident] ;
separator Ident ""
$ bnfc -haskell -m test.cf
$ make
$ echo 'x y z' | ./Testtest

Parse Successful!

[Abstract Syntax]

A [Ident "x",Ident "y",Ident "z"]

[Linearized tree]

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

https://stackoverflow.com/questions/18728909

复制
相关文章

相似问题

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