prolog.xml

  1<lexer>
  2  <config>
  3    <name>Prolog</name>
  4    <alias>prolog</alias>
  5    <filename>*.ecl</filename>
  6    <filename>*.prolog</filename>
  7    <filename>*.pro</filename>
  8    <filename>*.pl</filename>
  9    <mime_type>text/x-prolog</mime_type>
 10  </config>
 11  <rules>
 12    <state name="root">
 13      <rule pattern="/\*">
 14        <token type="CommentMultiline"/>
 15        <push state="nested-comment"/>
 16      </rule>
 17      <rule pattern="%.*">
 18        <token type="CommentSingle"/>
 19      </rule>
 20      <rule pattern="0\&#39;.">
 21        <token type="LiteralStringChar"/>
 22      </rule>
 23      <rule pattern="0b[01]+">
 24        <token type="LiteralNumberBin"/>
 25      </rule>
 26      <rule pattern="0o[0-7]+">
 27        <token type="LiteralNumberOct"/>
 28      </rule>
 29      <rule pattern="0x[0-9a-fA-F]+">
 30        <token type="LiteralNumberHex"/>
 31      </rule>
 32      <rule pattern="\d\d?\&#39;[a-zA-Z0-9]+">
 33        <token type="LiteralNumberInteger"/>
 34      </rule>
 35      <rule pattern="(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?">
 36        <token type="LiteralNumberFloat"/>
 37      </rule>
 38      <rule pattern="\d+">
 39        <token type="LiteralNumberInteger"/>
 40      </rule>
 41      <rule pattern="[\[\](){}|.,;!]">
 42        <token type="Punctuation"/>
 43      </rule>
 44      <rule pattern=":-|--&gt;">
 45        <token type="Punctuation"/>
 46      </rule>
 47      <rule pattern="&#34;(?:\\x[0-9a-fA-F]+\\|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|\\[0-7]+\\|\\[&#34;\nabcefnrstv]|[^\\&#34;])*&#34;">
 48        <token type="LiteralStringDouble"/>
 49      </rule>
 50      <rule pattern="&#39;(?:&#39;&#39;|[^&#39;])*&#39;">
 51        <token type="LiteralStringAtom"/>
 52      </rule>
 53      <rule pattern="is\b">
 54        <token type="Operator"/>
 55      </rule>
 56      <rule pattern="(&lt;|&gt;|=&lt;|&gt;=|==|=:=|=|/|//|\*|\+|-)(?=\s|[a-zA-Z0-9\[])">
 57        <token type="Operator"/>
 58      </rule>
 59      <rule pattern="(mod|div|not)\b">
 60        <token type="Operator"/>
 61      </rule>
 62      <rule pattern="_">
 63        <token type="Keyword"/>
 64      </rule>
 65      <rule pattern="([a-z]+)(:)">
 66        <bygroups>
 67          <token type="NameNamespace"/>
 68          <token type="Punctuation"/>
 69        </bygroups>
 70      </rule>
 71      <rule pattern="([a-zÀ-῿぀-퟿-￯][\w$À-῿぀-퟿-￯]*)(\s*)(:-|--&gt;)">
 72        <bygroups>
 73          <token type="NameFunction"/>
 74          <token type="Text"/>
 75          <token type="Operator"/>
 76        </bygroups>
 77      </rule>
 78      <rule pattern="([a-zÀ-῿぀-퟿-￯][\w$À-῿぀-퟿-￯]*)(\s*)(\()">
 79        <bygroups>
 80          <token type="NameFunction"/>
 81          <token type="Text"/>
 82          <token type="Punctuation"/>
 83        </bygroups>
 84      </rule>
 85      <rule pattern="[a-zÀ-῿぀-퟿-￯][\w$À-῿぀-퟿-￯]*">
 86        <token type="LiteralStringAtom"/>
 87      </rule>
 88      <rule pattern="[#&amp;*+\-./:&lt;=&gt;?@\\^~¡-¿‐-〿]+">
 89        <token type="LiteralStringAtom"/>
 90      </rule>
 91      <rule pattern="[A-Z_]\w*">
 92        <token type="NameVariable"/>
 93      </rule>
 94      <rule pattern="\s+|[ -‏￰-�￯]">
 95        <token type="Text"/>
 96      </rule>
 97    </state>
 98    <state name="nested-comment">
 99      <rule pattern="\*/">
100        <token type="CommentMultiline"/>
101        <pop depth="1"/>
102      </rule>
103      <rule pattern="/\*">
104        <token type="CommentMultiline"/>
105        <push/>
106      </rule>
107      <rule pattern="[^*/]+">
108        <token type="CommentMultiline"/>
109      </rule>
110      <rule pattern="[*/]">
111        <token type="CommentMultiline"/>
112      </rule>
113    </state>
114  </rules>
115</lexer>