我正在尝试为UCB Logo制作基于令牌的scala解析器。我面临的问题是,在Logo中,列表中列出的UCB徽标值中的任何表达式都可以用']','[',''之一分隔。如果存在任何其他类型的分隔符,则列表中的内容应视为单词。
简而言之,我如何制作一个考虑以下内容的令牌解析器:
__exit__()
- 应该是一份清单
[ 4 3 2 ]
- 应该是列表中的列表
[ [ 4 3 2 ] ]
- 应该是列表中的一个词
[ 1 + 2 ]
- 应该是列表中的单词
以下
[ [ 1 2 3 ] + ]
生成这些令牌:
代币: '[' ~ rep(chrExcept('[', ']')) ~ ']'
来自List([, [1 2 3], +, ])
。我相信它应该产生令牌:
[ [ 1 2 3 ] + ]
- >将+符号与令牌List([, [1 2 3] +, ])
合并。
这是我正在使用的Lexical的当前代码:
[1 2 3]