我见过两种在 Scala 中构建解析器的方法。
第一个是从 RegexParsers 扩展并定义您赢得的词汇模式。我看到的问题是我并不真正了解它如何处理关键字歧义。例如,如果我的关键字与 idents 匹配相同的模式,那么它将关键字作为 idents 处理。
为了解决这个问题,我看到过类似这样的帖子,其中展示了如何使用 StandardTokenParsers 来指定关键字。但是,我不明白如何指定正则表达式模式!是的,StandardTokenParsers 带有“ident”,但它没有附带我需要的其他内容(复杂的浮点数表示、特定的字符串文字模式和转义规则等)。
您如何同时获得指定关键字的能力和使用正则表达式指定标记模式的能力?