0

我正在尝试在 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(顺便说一句,我没有这个,因为我不知道如何实现它..这是我的问题开始)。但我的猜测到此为止。我怎样才能做到这一点?

4

0 回答 0