...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/smalltalk.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     1<lexer>
     2  <config>
     3    <name>Smalltalk</name>
     4    <alias>smalltalk</alias>
     5    <alias>squeak</alias>
     6    <alias>st</alias>
     7    <filename>*.st</filename>
     8    <mime_type>text/x-smalltalk</mime_type>
     9  </config>
    10  <rules>
    11    <state name="inner_parenth">
    12      <rule pattern="\)">
    13        <token type="LiteralStringSymbol"/>
    14        <pop depth="1"/>
    15      </rule>
    16      <rule>
    17        <include state="_parenth_helper"/>
    18      </rule>
    19    </state>
    20    <state name="objects">
    21      <rule pattern="\[">
    22        <token type="Text"/>
    23        <push state="blockvariables"/>
    24      </rule>
    25      <rule pattern="\]">
    26        <token type="Text"/>
    27        <push state="afterobject"/>
    28      </rule>
    29      <rule pattern="\b(self|super|true|false|nil|thisContext)\b">
    30        <token type="NameBuiltinPseudo"/>
    31        <push state="afterobject"/>
    32      </rule>
    33      <rule pattern="\b[A-Z]\w*(?!:)\b">
    34        <token type="NameClass"/>
    35        <push state="afterobject"/>
    36      </rule>
    37      <rule pattern="\b[a-z]\w*(?!:)\b">
    38        <token type="NameVariable"/>
    39        <push state="afterobject"/>
    40      </rule>
    41      <rule pattern="#(&#34;(&#34;&#34;|[^&#34;])*&#34;|[-+*/\\~&lt;&gt;=|&amp;!?,@%]+|[\w:]+)">
    42        <token type="LiteralStringSymbol"/>
    43        <push state="afterobject"/>
    44      </rule>
    45      <rule>
    46        <include state="literals"/>
    47      </rule>
    48    </state>
    49    <state name="afterobject">
    50      <rule pattern="! !$">
    51        <token type="Keyword"/>
    52        <pop depth="1"/>
    53      </rule>
    54      <rule>
    55        <include state="whitespaces"/>
    56      </rule>
    57      <rule pattern="\b(ifTrue:|ifFalse:|whileTrue:|whileFalse:|timesRepeat:)">
    58        <token type="NameBuiltin"/>
    59        <pop depth="1"/>
    60      </rule>
    61      <rule pattern="\b(new\b(?!:))">
    62        <token type="NameBuiltin"/>
    63      </rule>
    64      <rule pattern=":=|_">
    65        <token type="Operator"/>
    66        <pop depth="1"/>
    67      </rule>
    68      <rule pattern="\b[a-zA-Z]+\w*:">
    69        <token type="NameFunction"/>
    70        <pop depth="1"/>
    71      </rule>
    72      <rule pattern="\b[a-zA-Z]+\w*">
    73        <token type="NameFunction"/>
    74      </rule>
    75      <rule pattern="\w+:?|[-+*/\\~&lt;&gt;=|&amp;!?,@%]+">
    76        <token type="NameFunction"/>
    77        <pop depth="1"/>
    78      </rule>
    79      <rule pattern="\.">
    80        <token type="Punctuation"/>
    81        <pop depth="1"/>
    82      </rule>
    83      <rule pattern=";">
    84        <token type="Punctuation"/>
    85      </rule>
    86      <rule pattern="[\])}]">
    87        <token type="Text"/>
    88      </rule>
    89      <rule pattern="[\[({]">
    90        <token type="Text"/>
    91        <pop depth="1"/>
    92      </rule>
    93    </state>
    94    <state name="literals">
    95      <rule pattern="&#39;(&#39;&#39;|[^&#39;])*&#39;">
    96        <token type="LiteralString"/>
    97        <push state="afterobject"/>
    98      </rule>
    99      <rule pattern="\$.">
   100        <token type="LiteralStringChar"/>
   101        <push state="afterobject"/>
   102      </rule>
   103      <rule pattern="#\(">
   104        <token type="LiteralStringSymbol"/>
   105        <push state="parenth"/>
   106      </rule>
   107      <rule pattern="\)">
   108        <token type="Text"/>
   109        <push state="afterobject"/>
   110      </rule>
   111      <rule pattern="(\d+r)?-?\d+(\.\d+)?(e-?\d+)?">
   112        <token type="LiteralNumber"/>
   113        <push state="afterobject"/>
   114      </rule>
   115    </state>
   116    <state name="root">
   117      <rule pattern="(&lt;)(\w+:)(.*?)(&gt;)">
   118        <bygroups>
   119          <token type="Text"/>
   120          <token type="Keyword"/>
   121          <token type="Text"/>
   122          <token type="Text"/>
   123        </bygroups>
   124      </rule>
   125      <rule>
   126        <include state="squeak fileout"/>
   127      </rule>
   128      <rule>
   129        <include state="whitespaces"/>
   130      </rule>
   131      <rule>
   132        <include state="method definition"/>
   133      </rule>
   134      <rule pattern="(\|)([\w\s]*)(\|)">
   135        <bygroups>
   136          <token type="Operator"/>
   137          <token type="NameVariable"/>
   138          <token type="Operator"/>
   139        </bygroups>
   140      </rule>
   141      <rule>
   142        <include state="objects"/>
   143      </rule>
   144      <rule pattern="\^|:=|_">
   145        <token type="Operator"/>
   146      </rule>
   147      <rule pattern="[\]({}.;!]">
   148        <token type="Text"/>
   149      </rule>
   150    </state>
   151    <state name="_parenth_helper">
   152      <rule>
   153        <include state="whitespaces"/>
   154      </rule>
   155      <rule pattern="(\d+r)?-?\d+(\.\d+)?(e-?\d+)?">
   156        <token type="LiteralNumber"/>
   157      </rule>
   158      <rule pattern="[-+*/\\~&lt;&gt;=|&amp;#!?,@%\w:]+">
   159        <token type="LiteralStringSymbol"/>
   160      </rule>
   161      <rule pattern="&#39;(&#39;&#39;|[^&#39;])*&#39;">
   162        <token type="LiteralString"/>
   163      </rule>
   164      <rule pattern="\$.">
   165        <token type="LiteralStringChar"/>
   166      </rule>
   167      <rule pattern="#*\(">
   168        <token type="LiteralStringSymbol"/>
   169        <push state="inner_parenth"/>
   170      </rule>
   171    </state>
   172    <state name="parenth">
   173      <rule pattern="\)">
   174        <token type="LiteralStringSymbol"/>
   175        <push state="root" state="afterobject"/>
   176      </rule>
   177      <rule>
   178        <include state="_parenth_helper"/>
   179      </rule>
   180    </state>
   181    <state name="whitespaces">
   182      <rule pattern="\s+">
   183        <token type="Text"/>
   184      </rule>
   185      <rule pattern="&#34;(&#34;&#34;|[^&#34;])*&#34;">
   186        <token type="Comment"/>
   187      </rule>
   188    </state>
   189    <state name="squeak fileout">
   190      <rule pattern="^&#34;(&#34;&#34;|[^&#34;])*&#34;!">
   191        <token type="Keyword"/>
   192      </rule>
   193      <rule pattern="^&#39;(&#39;&#39;|[^&#39;])*&#39;!">
   194        <token type="Keyword"/>
   195      </rule>
   196      <rule pattern="^(!)(\w+)( commentStamp: )(.*?)( prior: .*?!\n)(.*?)(!)">
   197        <bygroups>
   198          <token type="Keyword"/>
   199          <token type="NameClass"/>
   200          <token type="Keyword"/>
   201          <token type="LiteralString"/>
   202          <token type="Keyword"/>
   203          <token type="Text"/>
   204          <token type="Keyword"/>
   205        </bygroups>
   206      </rule>
   207      <rule pattern="^(!)(\w+(?: class)?)( methodsFor: )(&#39;(?:&#39;&#39;|[^&#39;])*&#39;)(.*?!)">
   208        <bygroups>
   209          <token type="Keyword"/>
   210          <token type="NameClass"/>
   211          <token type="Keyword"/>
   212          <token type="LiteralString"/>
   213          <token type="Keyword"/>
   214        </bygroups>
   215      </rule>
   216      <rule pattern="^(\w+)( subclass: )(#\w+)(\s+instanceVariableNames: )(.*?)(\s+classVariableNames: )(.*?)(\s+poolDictionaries: )(.*?)(\s+category: )(.*?)(!)">
   217        <bygroups>
   218          <token type="NameClass"/>
   219          <token type="Keyword"/>
   220          <token type="LiteralStringSymbol"/>
   221          <token type="Keyword"/>
   222          <token type="LiteralString"/>
   223          <token type="Keyword"/>
   224          <token type="LiteralString"/>
   225          <token type="Keyword"/>
   226          <token type="LiteralString"/>
   227          <token type="Keyword"/>
   228          <token type="LiteralString"/>
   229          <token type="Keyword"/>
   230        </bygroups>
   231      </rule>
   232      <rule pattern="^(\w+(?: class)?)(\s+instanceVariableNames: )(.*?)(!)">
   233        <bygroups>
   234          <token type="NameClass"/>
   235          <token type="Keyword"/>
   236          <token type="LiteralString"/>
   237          <token type="Keyword"/>
   238        </bygroups>
   239      </rule>
   240      <rule pattern="(!\n)(\].*)(! !)$">
   241        <bygroups>
   242          <token type="Keyword"/>
   243          <token type="Text"/>
   244          <token type="Keyword"/>
   245        </bygroups>
   246      </rule>
   247      <rule pattern="! !$">
   248        <token type="Keyword"/>
   249      </rule>
   250    </state>
   251    <state name="method definition">
   252      <rule pattern="([a-zA-Z]+\w*:)(\s*)(\w+)">
   253        <bygroups>
   254          <token type="NameFunction"/>
   255          <token type="Text"/>
   256          <token type="NameVariable"/>
   257        </bygroups>
   258      </rule>
   259      <rule pattern="^(\b[a-zA-Z]+\w*\b)(\s*)$">
   260        <bygroups>
   261          <token type="NameFunction"/>
   262          <token type="Text"/>
   263        </bygroups>
   264      </rule>
   265      <rule pattern="^([-+*/\\~&lt;&gt;=|&amp;!?,@%]+)(\s*)(\w+)(\s*)$">
   266        <bygroups>
   267          <token type="NameFunction"/>
   268          <token type="Text"/>
   269          <token type="NameVariable"/>
   270          <token type="Text"/>
   271        </bygroups>
   272      </rule>
   273    </state>
   274    <state name="blockvariables">
   275      <rule>
   276        <include state="whitespaces"/>
   277      </rule>
   278      <rule pattern="(:)(\s*)(\w+)">
   279        <bygroups>
   280          <token type="Operator"/>
   281          <token type="Text"/>
   282          <token type="NameVariable"/>
   283        </bygroups>
   284      </rule>
   285      <rule pattern="\|">
   286        <token type="Operator"/>
   287        <pop depth="1"/>
   288      </rule>
   289      <rule>
   290        <pop depth="1"/>
   291      </rule>
   292    </state>
   293  </rules>
   294</lexer>

View as plain text