我正在使用jparsec来解析字符串,例如:
[1,2, 3]
[ 3, 4]
[3 ,4,56, 7 ]
[]
我已经实现了一些类(从我的接口继承Token
)来表示令牌:
final class OpenListToken
final class CommaToken
final class CloseListToken
final class NumberToken // Has a public final property "value" that contains the int
我还为每个实现了标记器:
static final Parser<OpenListToken> openListTokenParser
static final Parser<CommaToken> commaTokenParser
static final Parser<CloseListToken> closeListTokenParser
static final Parser<NumberToken> numberTokenParser
这些都在角色级别上起作用。例如:
final NumberToken t = numberTokenParser.parse("123");
// t.value == 123
final OpenListToken u = openListToken.parse("[");
// Succeeds
现在我想将它们组合成一个 的解析器ListExpression
,它是一个代表数字列表的类。我试过类似的东西:
openListTokenParser
.next(numberTokenParser.sepBy(commaTokenParser))
.followedBy(closeListTokenParser)
这适用于像这样的字符串,[1,2,3]
但显然不适用于像[ 1, 2 ]
.
是否有一个运算符需要一些解析器并whitespace*
在它们之间放置?
或者是否可以让我的ListExpression
解析器在我的Token
接口实例流而不是字符上工作?