Posted 20 years ago
by Radventure B.V
I have been trying to add support for detecting attributes in the C# language. For that I added the expressions listed below to the CSharp.xml to the existing nodes. This basically works, but isn't completely correct. For example, array indexes are now also marked as attributes.
Does anybody have any tips how to prevent this?
<!-- Highlighting Styles -->
<Styles>
<Style Key="AttributeDelimiterStyle" ForeColor="Purple" BackColor="Default" Bold="False" Italic="True" Underline="False" />
<Style Key="AttributeDefaultStyle" ForeColor="Purple" BackColor="Default" Bold="False" Italic="True" Underline="False" />
</Styles>
<!-- Code -->
<State Key="DefaultState">
<!-- Child States -->
<ChildStates>
<ChildState Key="AttributeState" />
</ChildStates>
</State>
<!-- States -->
<States>
<!-- Attributes -->
<State Key="AttributeState" Token="AttributeDefaultToken" Style="AttributeDefaultStyle">
<!-- Scopes -->
<Scopes>
<Scope BracketHighlight="True">
<ExplicitPatternGroup Type="StartScope" Token="AttributeStartToken" Style="AttributeDelimiterStyle" PatternValue="[" />
<!-- ExplicitPatternGroup Type="EndScope" Token="AttributeEndToken" Style="AttributeDelimiterStyle" PatternValue="]" / -->
<RegexPatternGroup Type="EndScope" Token="AttributeEndToken" Style="AttributeDelimiterStyle" PatternValue="[\]\n]" />
</Scope>
</Scopes>
<!-- Patterns Groups -->
<PatternGroups>
<RegexPatternGroup Token="AttributeWhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
<RegexPatternGroup Token="AttributeLineTerminatorToken" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />
<RegexPatternGroup Token="AttributeWordToken" PatternValue="\w+" />
<!-- RegexPatternGroup Token="AttributeDefaultToken" PatternValue="{NonLineTerminatorMacro}" / -->
<!-- RegexPatternGroup Token="AttributeDefaultToken" PatternValue="[^*]" / -->
<RegexPatternGroup Token="AttributeDefaultToken" PatternValue="[^\]\n]+" />
</PatternGroups>
</State>
</States>
Does anybody have any tips how to prevent this?
<!-- Highlighting Styles -->
<Styles>
<Style Key="AttributeDelimiterStyle" ForeColor="Purple" BackColor="Default" Bold="False" Italic="True" Underline="False" />
<Style Key="AttributeDefaultStyle" ForeColor="Purple" BackColor="Default" Bold="False" Italic="True" Underline="False" />
</Styles>
<!-- Code -->
<State Key="DefaultState">
<!-- Child States -->
<ChildStates>
<ChildState Key="AttributeState" />
</ChildStates>
</State>
<!-- States -->
<States>
<!-- Attributes -->
<State Key="AttributeState" Token="AttributeDefaultToken" Style="AttributeDefaultStyle">
<!-- Scopes -->
<Scopes>
<Scope BracketHighlight="True">
<ExplicitPatternGroup Type="StartScope" Token="AttributeStartToken" Style="AttributeDelimiterStyle" PatternValue="[" />
<!-- ExplicitPatternGroup Type="EndScope" Token="AttributeEndToken" Style="AttributeDelimiterStyle" PatternValue="]" / -->
<RegexPatternGroup Type="EndScope" Token="AttributeEndToken" Style="AttributeDelimiterStyle" PatternValue="[\]\n]" />
</Scope>
</Scopes>
<!-- Patterns Groups -->
<PatternGroups>
<RegexPatternGroup Token="AttributeWhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
<RegexPatternGroup Token="AttributeLineTerminatorToken" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />
<RegexPatternGroup Token="AttributeWordToken" PatternValue="\w+" />
<!-- RegexPatternGroup Token="AttributeDefaultToken" PatternValue="{NonLineTerminatorMacro}" / -->
<!-- RegexPatternGroup Token="AttributeDefaultToken" PatternValue="[^*]" / -->
<RegexPatternGroup Token="AttributeDefaultToken" PatternValue="[^\]\n]+" />
</PatternGroups>
</State>
</States>