121 lines
4.0 KiB
XML
121 lines
4.0 KiB
XML
<lexer>
|
|
<config>
|
|
<name>C#</name>
|
|
<alias>csharp</alias>
|
|
<alias>c#</alias>
|
|
<filename>*.cs</filename>
|
|
<mime_type>text/x-csharp</mime_type>
|
|
<dot_all>true</dot_all>
|
|
<ensure_nl>true</ensure_nl>
|
|
</config>
|
|
<rules>
|
|
<state name="root">
|
|
<rule pattern="^\s*\[.*?\]">
|
|
<token type="NameAttribute"/>
|
|
</rule>
|
|
<rule pattern="[^\S\n]+">
|
|
<token type="Text"/>
|
|
</rule>
|
|
<rule pattern="\\\n">
|
|
<token type="Text"/>
|
|
</rule>
|
|
<rule pattern="///[^\n\r]+">
|
|
<token type="CommentSpecial"/>
|
|
</rule>
|
|
<rule pattern="//[^\n\r]+">
|
|
<token type="CommentSingle"/>
|
|
</rule>
|
|
<rule pattern="/[*].*?[*]/">
|
|
<token type="CommentMultiline"/>
|
|
</rule>
|
|
<rule pattern="\n">
|
|
<token type="Text"/>
|
|
</rule>
|
|
<rule pattern="[~!%^&*()+=|\[\]:;,.<>/?-]">
|
|
<token type="Punctuation"/>
|
|
</rule>
|
|
<rule pattern="[{}]">
|
|
<token type="Punctuation"/>
|
|
</rule>
|
|
<rule pattern="@"(""|[^"])*"">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
<rule pattern="\$@?"(""|[^"])*"">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
<rule pattern=""(\\\\|\\"|[^"\n])*["\n]">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
<rule pattern="'\\.'|'[^\\]'">
|
|
<token type="LiteralStringChar"/>
|
|
</rule>
|
|
<rule pattern="0[xX][0-9a-fA-F]+[Ll]?|\d[_\d]*(\.\d*)?([eE][+-]?\d+)?[flFLdD]?">
|
|
<token type="LiteralNumber"/>
|
|
</rule>
|
|
<rule pattern="#[ \t]*(if|endif|else|elif|define|undef|line|error|warning|region|endregion|pragma|nullable)\b">
|
|
<token type="CommentPreproc"/>
|
|
</rule>
|
|
<rule pattern="\b(extern)(\s+)(alias)\b">
|
|
<bygroups>
|
|
<token type="Keyword"/>
|
|
<token type="Text"/>
|
|
<token type="Keyword"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="(as|await|base|break|by|case|catch|checked|continue|default|delegate|do|else|event|finally|fixed|for|foreach|goto|if|in|init|is|let|lock|new|on|out|params|readonly|ref|return|sizeof|stackalloc|switch|this|throw|try|typeof|unchecked|virtual|void|while|get|set|new|yield|add|remove|value|alias|ascending|descending|from|group|into|orderby|select|thenby|where|join|equals)\b">
|
|
<token type="Keyword"/>
|
|
</rule>
|
|
<rule pattern="(global)(::)">
|
|
<bygroups>
|
|
<token type="Keyword"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="(abstract|async|const|enum|explicit|extern|implicit|internal|operator|override|partial|private|protected|public|static|sealed|unsafe|volatile)\b">
|
|
<token type="KeywordDeclaration"/>
|
|
</rule>
|
|
<rule pattern="(bool|byte|char|decimal|double|dynamic|float|int|long|object|sbyte|short|string|uint|ulong|ushort|var)\b\??">
|
|
<token type="KeywordType"/>
|
|
</rule>
|
|
<rule pattern="(true|false|null)\b">
|
|
<token type="KeywordConstant"/>
|
|
</rule>
|
|
<rule pattern="(class|struct|record|interface)(\s+)">
|
|
<bygroups>
|
|
<token type="Keyword"/>
|
|
<token type="Text"/>
|
|
</bygroups>
|
|
<push state="class"/>
|
|
</rule>
|
|
<rule pattern="(namespace|using)(\s+)">
|
|
<bygroups>
|
|
<token type="Keyword"/>
|
|
<token type="Text"/>
|
|
</bygroups>
|
|
<push state="namespace"/>
|
|
</rule>
|
|
<rule pattern="@?[_a-zA-Z]\w*">
|
|
<token type="Name"/>
|
|
</rule>
|
|
</state>
|
|
<state name="class">
|
|
<rule pattern="@?[_a-zA-Z]\w*">
|
|
<token type="NameClass"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
</state>
|
|
<state name="namespace">
|
|
<rule pattern="(?=\()">
|
|
<token type="Text"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="(@?[_a-zA-Z]\w*|\.)+">
|
|
<token type="NameNamespace"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
</state>
|
|
</rules>
|
|
</lexer> |