Antlr4.Codegen.ActionTranslator.QualifiedAttr C# (CSharp) Method

QualifiedAttr() public method

public QualifiedAttr ( string expr, Antlr.Runtime.IToken x, Antlr.Runtime.IToken y ) : void
expr string
x Antlr.Runtime.IToken
y Antlr.Runtime.IToken
return void
        public virtual void QualifiedAttr(string expr, IToken x, IToken y)
        {
            gen.g.tool.Log("action-translator", "qattr " + x + "." + y);
            if (node.resolver.ResolveToAttribute(x.Text, node) != null)
            {
                // must be a member access to a predefined attribute like $ctx.foo
                Attr(expr, x);
                chunks.Add(new ActionText(nodeContext, "." + y.Text));
                return;
            }
            Attribute a = node.resolver.ResolveToAttribute(x.Text, y.Text, node);
            if (a == null)
            {
                // Added in response to https://github.com/antlr/antlr4/issues/1211
                gen.g.tool.errMgr.GrammarError(ErrorType.UNKNOWN_SIMPLE_ATTRIBUTE,
                                               gen.g.fileName, x,
                                               x.Text,
                                               "rule");
                return;
            }
            switch (a.dict.type)
            {
            case AttributeDict.DictType.ARG:
                chunks.Add(new ArgRef(nodeContext, y.Text));
                break; // has to be current rule
            case AttributeDict.DictType.RET:
                chunks.Add(new QRetValueRef(nodeContext, GetRuleLabel(x.Text), y.Text));
                break;
            case AttributeDict.DictType.PREDEFINED_RULE:
                chunks.Add(GetRulePropertyRef(x, y));
                break;
            case AttributeDict.DictType.TOKEN:
                chunks.Add(GetTokenPropertyRef(x, y));
                break;
            }
        }