我正在尝试在 Superpower C# 解析器库中创建一个解析器来解析递归/链式括号样式访问器。这是我要解析的示例:
indentifier.identifier[exp][exp].identifier[exp]
对于我正在使用的点访问器Parse.Chain
和
public enum LangToken
{
BadToken,
Identifier,
....
Period,
....
}
private static TokenListParser<LangToken, Expression> Identifier { get; } =
from identifier in Token.EqualTo(LangToken.Identifier)
select (Expression) new Identifier(identifier);
private static TokenListParser<LangToken, Expression> StaticMemberAccess { get; } =
from expression in Parse.Chain(Token.EqualTo(LangToken.Period), Identifier, MakeAccess)
select expression;
private static Expression MakeAccess(LangToken accessor, Expression obj, Expression property)
{
return new MemberExpression(obj, accessor, property);
}
这很好用,我的猜测是我需要更改Identifier
解析器并使其成为ie BracketMemberAccess
(顺便说一句,我没有这个,因为我不知道如何实现它..这是我的问题开始)。但我的猜测到此为止。我怎样才能做到这一点?