Сверхмощный синтаксический анализатор, аксессуар в стиле синтаксической скобки

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

0 ответов

Другие вопросы по тегам