public PsiUnresolvedRuleReferenceHighlighting(ITreeNode element)
        {
            myElement = element;

            if (element is RuleName)
            {
                myReference = (element as RuleName).RuleNameReference;
            }
        }
        public CreatePsiRuleTarget(PsiRuleReference reference)
        {
            myElement = reference.GetTreeNode();
            string name = reference.GetName();

            var node = myElement.NextSibling;

            while (node != null)
            {
                if (!node.IsWhitespaceToken())
                {
                    if (!(node is IRuleParameters))
                    {
                        break;
                    }
                    var child = node.FirstChild;
                    while (child != null)
                    {
                        if (!child.IsWhitespaceToken())
                        {
                            if (child is IRuleBraceParameters)
                            {
                                myHasBraceParameters = true;
                            }
                            if (child is IRuleBracketParameters)
                            {
                                CollectVariableParameters(child as IRuleBracketParameters);
                            }
                        }
                        child = child.NextSibling;
                    }
                    break;
                }
                node = node.NextSibling;
            }


            if (name != "")
            {
                myDeclaration = PsiElementFactory.GetInstance(myElement.GetPsiModule()).CreateRuleDeclaration(name, myHasBraceParameters, myVariableParameters);
            }
            else
            {
                myDeclaration = null;
            }

            Anchor = myElement.GetContainingNode <IRuleDeclaration>();
        }
Exemple #3
0
        public PsiUnresolvedRuleReferenceHighlighting(RuleName element)
        {
            myElement = element;

            myReference = element.RuleNameReference;
        }