public PsiUnresolvedRuleReferenceHighlighting(ITreeNode element) { myElement = element; if (element is RuleName) { myReference = (element as RuleName).RuleNameReference; } }
public CreatePsiRuleTarget(PsiRuleReference reference) { myReference = 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; } myDeclaration = PsiElementFactory.GetInstance(myElement.GetPsiModule()).CreateRuleDeclaration(name, myHasBraceParameters, myVariableParameters); Anchor = myElement.GetContainingNode<IRuleDeclaration>(); }