Сверхмощный синтаксический анализатор, аксессуар в стиле синтаксической скобки
Я пытаюсь создать синтаксический анализатор в библиотеке синтаксического анализатора 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
(кстати, у меня этого нет, так как я не знаю, как это реализовать... это моя проблема для начала). Но мои предположения на этом заканчиваются. Как я могу это сделать?