parsing - 如何使用 PetitParser 解析以关键字开头的标识符?

标签 parsing smalltalk petitparser

我想使用 PetitParser 解析编程语言中的标识符。

要求之一是标识符的名称不是关键字(例如 null ),因此 null将不是有效的标识符。

对于这种情况,我能想到的最小解析器是:

identifier := ('null' asParser not,  #word asParser plus)

但是,如果输入以关键字开头,则会失败:
identifier end parse: 'nullable'

你有什么建议来解决这个问题吗?谢谢!

最佳答案

identifier := ('null' asParser, #word asParser plus) /
    ('null' asParser not, #word asParser plus).

identifier end parse: 'nullable'. "=> #('null' #($a $b $l $e))"
identifier end parse: 'null'. "=>  'at 0'"
identifier end parse: 'foo' "=> #(nil #($f $o $o))"
at 0是 PetitParser 的默认“解析失败”错误,表明解析器将接受“可空”、普通词,而不是“空”。

关于parsing - 如何使用 PetitParser 解析以关键字开头的标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970979/

相关文章:

Smalltalk - 将字符串转换为小写

oop - Smalltalk-80 实现中方法的参数计数限制

java - PetitParser:是否有像 plus() 但有上限的解析器?

php - 解析 JSON Feed

perl - 在 Perl 脚本中处理命令行参数的正确方法是什么?

smalltalk - 如何配置 Seaside 3.2 session 超时(年龄)

smalltalk - 教科书上的 PetitParser 算术脚本不起作用。它一直说 ParseOn 为零?

parsing - 使用smalltalk编写一个小解析器,如何使用创建的方法'标识符?

java - 使用 SimpleXml 将 Xml 解析为 Java

json - 将 JSON 解析为 shell 脚本中的数组