1. <lexer>
    
  2.   <config>
    
  3.     <name>Jungle</name>
    
  4.     <alias>jungle</alias>
    
  5.     <filename>*.jungle</filename>
    
  6.     <mime_type>text/x-jungle</mime_type>
    
  7.   </config>
    
  8.   <rules>
    
  9.     <state name="var">
    
  10.       <rule pattern="[^\S\n]+">
    
  11.         <token type="Text"/>
    
  12.       </rule>
    
  13.       <rule pattern="\b(((re)?source|barrel)Path|excludeAnnotations|annotations|lang)\b">
    
  14.         <token type="NameBuiltin"/>
    
  15.       </rule>
    
  16.       <rule pattern="\bbase\b">
    
  17.         <token type="NameConstant"/>
    
  18.       </rule>
    
  19.       <rule pattern="\b(ind|zsm|hrv|ces|dan|dut|eng|fin|fre|deu|gre|hun|ita|nob|po[lr]|rus|sl[ov]|spa|swe|ara|heb|zh[st]|jpn|kor|tha|vie|bul|tur)">
    
  20.         <token type="NameConstant"/>
    
  21.       </rule>
    
  22.       <rule pattern="\b((semi)?round|rectangle)(-\d+x\d+)?\b">
    
  23.         <token type="NameConstant"/>
    
  24.       </rule>
    
  25.       <rule pattern="[\.;\[\]\(\$]">
    
  26.         <token type="Punctuation"/>
    
  27.       </rule>
    
  28.       <rule pattern="\)">
    
  29.         <token type="Punctuation"/>
    
  30.         <pop depth="1"/>
    
  31.       </rule>
    
  32.       <rule pattern="[a-zA-Z_]\w*">
    
  33.         <token type="Name"/>
    
  34.       </rule>
    
  35.       <rule>
    
  36.         <pop depth="1"/>
    
  37.       </rule>
    
  38.     </state>
    
  39.     <state name="root">
    
  40.       <rule pattern="[^\S\n]+">
    
  41.         <token type="Text"/>
    
  42.       </rule>
    
  43.       <rule pattern="\n">
    
  44.         <token type="Text"/>
    
  45.       </rule>
    
  46.       <rule pattern="#(\n|[\w\W]*?[^#]\n)">
    
  47.         <token type="CommentSingle"/>
    
  48.       </rule>
    
  49.       <rule pattern="^(?=\S)">
    
  50.         <token type="None"/>
    
  51.         <push state="instruction"/>
    
  52.       </rule>
    
  53.       <rule pattern="[\.;\[\]\(\)\$]">
    
  54.         <token type="Punctuation"/>
    
  55.       </rule>
    
  56.       <rule pattern="[a-zA-Z_]\w*">
    
  57.         <token type="Name"/>
    
  58.       </rule>
    
  59.     </state>
    
  60.     <state name="instruction">
    
  61.       <rule pattern="[^\S\n]+">
    
  62.         <token type="Text"/>
    
  63.       </rule>
    
  64.       <rule pattern="=">
    
  65.         <token type="Operator"/>
    
  66.         <push state="value"/>
    
  67.       </rule>
    
  68.       <rule pattern="(?=\S)">
    
  69.         <token type="None"/>
    
  70.         <push state="var"/>
    
  71.       </rule>
    
  72.       <rule>
    
  73.         <pop depth="1"/>
    
  74.       </rule>
    
  75.     </state>
    
  76.     <state name="value">
    
  77.       <rule pattern="[^\S\n]+">
    
  78.         <token type="Text"/>
    
  79.       </rule>
    
  80.       <rule pattern="\$\(">
    
  81.         <token type="Punctuation"/>
    
  82.         <push state="var"/>
    
  83.       </rule>
    
  84.       <rule pattern="[;\[\]\(\)\$]">
    
  85.         <token type="Punctuation"/>
    
  86.       </rule>
    
  87.       <rule pattern="#(\n|[\w\W]*?[^#]\n)">
    
  88.         <token type="CommentSingle"/>
    
  89.       </rule>
    
  90.       <rule pattern="[\w_\-\.\/\\]+">
    
  91.         <token type="Text"/>
    
  92.       </rule>
    
  93.       <rule>
    
  94.         <pop depth="1"/>
    
  95.       </rule>
    
  96.     </state>
    
  97.   </rules>
    
  98. </lexer>