newspeak.xml

  1<lexer>
  2  <config>
  3    <name>Newspeak</name>
  4    <alias>newspeak</alias>
  5    <filename>*.ns2</filename>
  6    <mime_type>text/x-newspeak</mime_type>
  7  </config>
  8  <rules>
  9    <state name="root">
 10      <rule pattern="\b(Newsqueak2)\b">
 11        <token type="KeywordDeclaration"/>
 12      </rule>
 13      <rule pattern="&#39;[^&#39;]*&#39;">
 14        <token type="LiteralString"/>
 15      </rule>
 16      <rule pattern="\b(class)(\s+)(\w+)(\s*)">
 17        <bygroups>
 18          <token type="KeywordDeclaration"/>
 19          <token type="Text"/>
 20          <token type="NameClass"/>
 21          <token type="Text"/>
 22        </bygroups>
 23      </rule>
 24      <rule pattern="\b(mixin|self|super|private|public|protected|nil|true|false)\b">
 25        <token type="Keyword"/>
 26      </rule>
 27      <rule pattern="(\w+\:)(\s*)([a-zA-Z_]\w+)">
 28        <bygroups>
 29          <token type="NameFunction"/>
 30          <token type="Text"/>
 31          <token type="NameVariable"/>
 32        </bygroups>
 33      </rule>
 34      <rule pattern="(\w+)(\s*)(=)">
 35        <bygroups>
 36          <token type="NameAttribute"/>
 37          <token type="Text"/>
 38          <token type="Operator"/>
 39        </bygroups>
 40      </rule>
 41      <rule pattern="&lt;\w+&gt;">
 42        <token type="CommentSpecial"/>
 43      </rule>
 44      <rule>
 45        <include state="expressionstat"/>
 46      </rule>
 47      <rule>
 48        <include state="whitespace"/>
 49      </rule>
 50    </state>
 51    <state name="expressionstat">
 52      <rule pattern="(\d+\.\d*|\.\d+|\d+[fF])[fF]?">
 53        <token type="LiteralNumberFloat"/>
 54      </rule>
 55      <rule pattern="\d+">
 56        <token type="LiteralNumberInteger"/>
 57      </rule>
 58      <rule pattern=":\w+">
 59        <token type="NameVariable"/>
 60      </rule>
 61      <rule pattern="(\w+)(::)">
 62        <bygroups>
 63          <token type="NameVariable"/>
 64          <token type="Operator"/>
 65        </bygroups>
 66      </rule>
 67      <rule pattern="\w+:">
 68        <token type="NameFunction"/>
 69      </rule>
 70      <rule pattern="\w+">
 71        <token type="NameVariable"/>
 72      </rule>
 73      <rule pattern="\(|\)">
 74        <token type="Punctuation"/>
 75      </rule>
 76      <rule pattern="\[|\]">
 77        <token type="Punctuation"/>
 78      </rule>
 79      <rule pattern="\{|\}">
 80        <token type="Punctuation"/>
 81      </rule>
 82      <rule pattern="(\^|\+|\/|~|\*|&lt;|&gt;|=|@|%|\||&amp;|\?|!|,|-|:)">
 83        <token type="Operator"/>
 84      </rule>
 85      <rule pattern="\.|;">
 86        <token type="Punctuation"/>
 87      </rule>
 88      <rule>
 89        <include state="whitespace"/>
 90      </rule>
 91      <rule>
 92        <include state="literals"/>
 93      </rule>
 94    </state>
 95    <state name="literals">
 96      <rule pattern="\$.">
 97        <token type="LiteralString"/>
 98      </rule>
 99      <rule pattern="&#39;[^&#39;]*&#39;">
100        <token type="LiteralString"/>
101      </rule>
102      <rule pattern="#&#39;[^&#39;]*&#39;">
103        <token type="LiteralStringSymbol"/>
104      </rule>
105      <rule pattern="#\w+:?">
106        <token type="LiteralStringSymbol"/>
107      </rule>
108      <rule pattern="#(\+|\/|~|\*|&lt;|&gt;|=|@|%|\||&amp;|\?|!|,|-)+">
109        <token type="LiteralStringSymbol"/>
110      </rule>
111    </state>
112    <state name="whitespace">
113      <rule pattern="\s+">
114        <token type="Text"/>
115      </rule>
116      <rule pattern="&#34;[^&#34;]*&#34;">
117        <token type="Comment"/>
118      </rule>
119    </state>
120  </rules>
121</lexer>