我可以在运行时定义flex令牌吗?

时间:2009-11-20 15:16:51

标签: lex delimited-text

我想使用lex / yacc读取分隔的文本文件。这对于解析器来说是非常简单的东西,但是不同的文本文件具有不同的分隔符,所以我想让用户指定文本是否由制表符,空格,逗号,管道unicode snowmen等分隔开来。

使用这些工具的常规方法是为lex和yacc编写规范,编译,然后使用静态代码进行解析。但有没有办法让用户在运行时指定分隔符(从而重新定义标记)?

我目前正在使用flex / bison,但我愿意接受小型便携式替代品的建议。

1 个答案:

答案 0 :(得分:0)

不,没有办法做到这一点。 Lex和Yacc创建词法分析器或解析器表作为C程序的一部分,因此在创建后不能对其进行更改。

您需要解析的格式并不完全清楚,因此如果没有示例,我将不会提出任何建议。