【发布时间】:2014-07-04 05:10:40
【问题描述】:
我目前正在编写一个 csv 解析器。 csv 格式的定义由 ABNF 定义的RFC4180 给出。所以csv的定义绝对是contex-free的语法。但是,我想知道 csv 是否是常规语法?这样我就可以只用一个有限状态机来解析它。再者,如果是正则文法,能被有限状态机解析,是不是也能被正则表达式解析?
【问题讨论】:
-
有点挑剔以澄清您的术语:“如果 csv 是常规语法”:csv 文件是一种语言的句子(字母表上所有可能字符串的子集)。您是否必须使用解析器或可以摆脱 FSA 取决于您为该语言编写的语法。如果您编写的语法是常规的,那么您对 FSA 很满意(这是最快的方法),如果您的语法是上下文无关的,那么您需要一个解析器。顺便说一句,REs 只是编写正则语法的一种形式:您可以使用通用生产系统来描述 RGs,但是您必须验证正则性才能应用 FSM。
-
@user1666959 谢谢。现在我明白了“这取决于你写什么语法”。但是,我认为在这种情况下,我想知道的是“可以使用最低语法来解析 csv”。现在我认为这个“最低语法”是正则语法。
标签: regex parsing csv context-free-grammar