0

我尝试解决以下解析问题,但失败了:

我有一个 CSV 文件,文件中的某个命令可以更改分隔符,当前分隔符可以用斜杠转义。看这个例子:

a,b,c,list;with;values
a,b,c,list\,with\,values
@separator,;
a;b;c;list,with,values
a;b;c;list\;with\;values

这可能吗?如何?

4

2 回答 2

1

看来你想要一个有上下文的语法。Rascal 仅支持上下文无关文法。

格式看起来很简单,带有一些上下文变量的循环不能解决这个问题吗?(在任何具有基本字符串操作的语言中)

于 2014-10-09T20:59:35.027 回答
0

lang::csv::IO如果我没记错的话,我会使用处理这些异常的 CSV 阅读器。

如果您想为此编写语法,您可以使用参数化的非终结符(我猜)为您使用的每个新分隔符实例化一个新语法,或者为每个分隔符使用不同的语法。然后,您首先拆分文件@separator,然后使用每种不同的语法解析不同的部分。

于 2014-10-10T14:11:44.570 回答