使用动态分隔符解析CSV文件

时间:2014-10-09 14:08:44

标签: context-free-grammar rascal

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

我有一个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

这可能吗?怎么样?

2 个答案:

答案 0 :(得分:1)

似乎你想要一个带语境的语法。 Rascal仅支持无上下文语法。

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

答案 1 :(得分:0)

如果我没有弄错的话,我会在lang::csv::IO中使用CSV阅读器处理这些例外情况。

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