1. <lexer>
    
  2.   <config>
    
  3.     <name>Turtle</name>
    
  4.     <alias>turtle</alias>
    
  5.     <filename>*.ttl</filename>
    
  6.     <mime_type>text/turtle</mime_type>
    
  7.     <mime_type>application/x-turtle</mime_type>
    
  8.     <case_insensitive>true</case_insensitive>
    
  9.     <not_multiline>true</not_multiline>
    
  10.   </config>
    
  11.   <rules>
    
  12.     <state name="triple-double-quoted-string">
    
  13.       <rule pattern="&#34;&#34;&#34;">
    
  14.         <token type="LiteralString"/>
    
  15.         <push state="end-of-string"/>
    
  16.       </rule>
    
  17.       <rule pattern="[^\\]+">
    
  18.         <token type="LiteralString"/>
    
  19.       </rule>
    
  20.       <rule pattern="\\">
    
  21.         <token type="LiteralString"/>
    
  22.         <push state="string-escape"/>
    
  23.       </rule>
    
  24.     </state>
    
  25.     <state name="single-double-quoted-string">
    
  26.       <rule pattern="&#34;">
    
  27.         <token type="LiteralString"/>
    
  28.         <push state="end-of-string"/>
    
  29.       </rule>
    
  30.       <rule pattern="[^&#34;\\\n]+">
    
  31.         <token type="LiteralString"/>
    
  32.       </rule>
    
  33.       <rule pattern="\\">
    
  34.         <token type="LiteralString"/>
    
  35.         <push state="string-escape"/>
    
  36.       </rule>
    
  37.     </state>
    
  38.     <state name="triple-single-quoted-string">
    
  39.       <rule pattern="&#39;&#39;&#39;">
    
  40.         <token type="LiteralString"/>
    
  41.         <push state="end-of-string"/>
    
  42.       </rule>
    
  43.       <rule pattern="[^\\]+">
    
  44.         <token type="LiteralString"/>
    
  45.       </rule>
    
  46.       <rule pattern="\\">
    
  47.         <token type="LiteralString"/>
    
  48.         <push state="string-escape"/>
    
  49.       </rule>
    
  50.     </state>
    
  51.     <state name="single-single-quoted-string">
    
  52.       <rule pattern="&#39;">
    
  53.         <token type="LiteralString"/>
    
  54.         <push state="end-of-string"/>
    
  55.       </rule>
    
  56.       <rule pattern="[^&#39;\\\n]+">
    
  57.         <token type="LiteralString"/>
    
  58.       </rule>
    
  59.       <rule pattern="\\">
    
  60.         <token type="LiteralString"/>
    
  61.         <push state="string-escape"/>
    
  62.       </rule>
    
  63.     </state>
    
  64.     <state name="string-escape">
    
  65.       <rule pattern=".">
    
  66.         <token type="LiteralString"/>
    
  67.         <pop depth="1"/>
    
  68.       </rule>
    
  69.     </state>
    
  70.     <state name="end-of-string">
    
  71.       <rule pattern="(@)([a-z]+(:?-[a-z0-9]+)*)">
    
  72.         <bygroups>
    
  73.           <token type="Operator"/>
    
  74.           <token type="GenericEmph"/>
    
  75.           <token type="GenericEmph"/>
    
  76.         </bygroups>
    
  77.         <pop depth="2"/>
    
  78.       </rule>
    
  79.       <rule pattern="(\^\^)(&lt;[^&lt;&gt;&#34;{}|^`\\\x00-\x20]*&gt;)">
    
  80.         <bygroups>
    
  81.           <token type="Operator"/>
    
  82.           <token type="GenericEmph"/>
    
  83.         </bygroups>
    
  84.         <pop depth="2"/>
    
  85.       </rule>
    
  86.       <rule pattern="(\^\^)((?:[a-z][\w-]*)?\:)([a-z][\w-]*)">
    
  87.         <bygroups>
    
  88.           <token type="Operator"/>
    
  89.           <token type="GenericEmph"/>
    
  90.           <token type="GenericEmph"/>
    
  91.         </bygroups>
    
  92.         <pop depth="2"/>
    
  93.       </rule>
    
  94.       <rule>
    
  95.         <pop depth="2"/>
    
  96.       </rule>
    
  97.     </state>
    
  98.     <state name="root">
    
  99.       <rule pattern="\s+">
    
  100.         <token type="TextWhitespace"/>
    
  101.       </rule>
    
  102.       <rule pattern="(@base|BASE)(\s+)(&lt;[^&lt;&gt;&#34;{}|^`\\\x00-\x20]*&gt;)(\s*)(\.?)">
    
  103.         <bygroups>
    
  104.           <token type="Keyword"/>
    
  105.           <token type="TextWhitespace"/>
    
  106.           <token type="NameVariable"/>
    
  107.           <token type="TextWhitespace"/>
    
  108.           <token type="Punctuation"/>
    
  109.         </bygroups>
    
  110.       </rule>
    
  111.       <rule pattern="(@prefix|PREFIX)(\s+)((?:[a-z][\w-]*)?\:)(\s+)(&lt;[^&lt;&gt;&#34;{}|^`\\\x00-\x20]*&gt;)(\s*)(\.?)">
    
  112.         <bygroups>
    
  113.           <token type="Keyword"/>
    
  114.           <token type="TextWhitespace"/>
    
  115.           <token type="NameNamespace"/>
    
  116.           <token type="TextWhitespace"/>
    
  117.           <token type="NameVariable"/>
    
  118.           <token type="TextWhitespace"/>
    
  119.           <token type="Punctuation"/>
    
  120.         </bygroups>
    
  121.       </rule>
    
  122.       <rule pattern="(?&lt;=\s)a(?=\s)">
    
  123.         <token type="KeywordType"/>
    
  124.       </rule>
    
  125.       <rule pattern="(&lt;[^&lt;&gt;&#34;{}|^`\\\x00-\x20]*&gt;)">
    
  126.         <token type="NameVariable"/>
    
  127.       </rule>
    
  128.       <rule pattern="((?:[a-z][\w-]*)?\:)([a-z][\w-]*)">
    
  129.         <bygroups>
    
  130.           <token type="NameNamespace"/>
    
  131.           <token type="NameTag"/>
    
  132.         </bygroups>
    
  133.       </rule>
    
  134.       <rule pattern="#[^\n]+">
    
  135.         <token type="Comment"/>
    
  136.       </rule>
    
  137.       <rule pattern="\b(true|false)\b">
    
  138.         <token type="Literal"/>
    
  139.       </rule>
    
  140.       <rule pattern="[+\-]?\d*\.\d+">
    
  141.         <token type="LiteralNumberFloat"/>
    
  142.       </rule>
    
  143.       <rule pattern="[+\-]?\d*(:?\.\d+)?E[+\-]?\d+">
    
  144.         <token type="LiteralNumberFloat"/>
    
  145.       </rule>
    
  146.       <rule pattern="[+\-]?\d+">
    
  147.         <token type="LiteralNumberInteger"/>
    
  148.       </rule>
    
  149.       <rule pattern="[\[\](){}.;,:^]">
    
  150.         <token type="Punctuation"/>
    
  151.       </rule>
    
  152.       <rule pattern="&#34;&#34;&#34;">
    
  153.         <token type="LiteralString"/>
    
  154.         <push state="triple-double-quoted-string"/>
    
  155.       </rule>
    
  156.       <rule pattern="&#34;">
    
  157.         <token type="LiteralString"/>
    
  158.         <push state="single-double-quoted-string"/>
    
  159.       </rule>
    
  160.       <rule pattern="&#39;&#39;&#39;">
    
  161.         <token type="LiteralString"/>
    
  162.         <push state="triple-single-quoted-string"/>
    
  163.       </rule>
    
  164.       <rule pattern="&#39;">
    
  165.         <token type="LiteralString"/>
    
  166.         <push state="single-single-quoted-string"/>
    
  167.       </rule>
    
  168.     </state>
    
  169.   </rules>
    
  170. </lexer>