使用嵌套标记扫描带有非分隔字符串的语言

问题描述 投票:0回答:1

我想为具有非分隔字符串的语言创建词法分析器/解析器。 该语言的哪一部分是字符串,由其前面的命令定义。

例如,它的语句如下所示:

pause 5
alert Hello world[CRLF] this contains 'pause' once (1) 

此实例中的警报可以以任何字符串结尾,包括关键字和数字。更复杂的是,文本可以包含我想分开的[CRLF]标签。理想情况下,我希望将其分解为:

[PAUSE][INT 5]
[ALERT][STR "Hello world"][CRLF][STR " this contains 'pause' once (1)"]

我目前正在使用flex,但从我收集的内容来看,这种情况是不可能的。 我怎样才能达到我想要的目标?

regex parsing flex-lexer lex lexer
1个回答
1
投票

(由于你的一个标签是“正则表达式”,我建议采用非弹性方法。)

从示例中,您似乎可以:

  1. 匹配^(\w+) (.+)的每一行以获取命令和参数文本,然后
  2. 通过在(\[\w+\])上拆分arguments-text来获取单个参数(假设你的正则表达式库的split函数可以返回splitter-strings和split-strings)。

你的实际情况可能更复杂,像flex这样的东西更有意义,但到目前为止我还没有真正看到它。

© www.soinside.com 2019 - 2024. All rights reserved.