1. <lexer>
    
  2.   <config>
    
  3.     <name>Nginx configuration file</name>
    
  4.     <alias>nginx</alias>
    
  5.     <filename>nginx.conf</filename>
    
  6.     <mime_type>text/x-nginx-conf</mime_type>
    
  7.   </config>
    
  8.   <rules>
    
  9.     <state name="root">
    
  10.       <rule pattern="(include)(\s+)([^\s;]+)">
    
  11.         <bygroups>
    
  12.           <token type="Keyword"/>
    
  13.           <token type="Text"/>
    
  14.           <token type="Name"/>
    
  15.         </bygroups>
    
  16.       </rule>
    
  17.       <rule pattern="[^\s;#]+">
    
  18.         <token type="Keyword"/>
    
  19.         <push state="stmt"/>
    
  20.       </rule>
    
  21.       <rule>
    
  22.         <include state="base"/>
    
  23.       </rule>
    
  24.     </state>
    
  25.     <state name="block">
    
  26.       <rule pattern="\}">
    
  27.         <token type="Punctuation"/>
    
  28.         <pop depth="2"/>
    
  29.       </rule>
    
  30.       <rule pattern="[^\s;#]+">
    
  31.         <token type="KeywordNamespace"/>
    
  32.         <push state="stmt"/>
    
  33.       </rule>
    
  34.       <rule>
    
  35.         <include state="base"/>
    
  36.       </rule>
    
  37.     </state>
    
  38.     <state name="stmt">
    
  39.       <rule pattern="\{">
    
  40.         <token type="Punctuation"/>
    
  41.         <push state="block"/>
    
  42.       </rule>
    
  43.       <rule pattern=";">
    
  44.         <token type="Punctuation"/>
    
  45.         <pop depth="1"/>
    
  46.       </rule>
    
  47.       <rule>
    
  48.         <include state="base"/>
    
  49.       </rule>
    
  50.     </state>
    
  51.     <state name="base">
    
  52.       <rule pattern="#.*\n">
    
  53.         <token type="CommentSingle"/>
    
  54.       </rule>
    
  55.       <rule pattern="on|off">
    
  56.         <token type="NameConstant"/>
    
  57.       </rule>
    
  58.       <rule pattern="\$[^\s;#()]+">
    
  59.         <token type="NameVariable"/>
    
  60.       </rule>
    
  61.       <rule pattern="([a-z0-9.-]+)(:)([0-9]+)">
    
  62.         <bygroups>
    
  63.           <token type="Name"/>
    
  64.           <token type="Punctuation"/>
    
  65.           <token type="LiteralNumberInteger"/>
    
  66.         </bygroups>
    
  67.       </rule>
    
  68.       <rule pattern="[a-z-]+/[a-z-+]+">
    
  69.         <token type="LiteralString"/>
    
  70.       </rule>
    
  71.       <rule pattern="[0-9]+[km]?\b">
    
  72.         <token type="LiteralNumberInteger"/>
    
  73.       </rule>
    
  74.       <rule pattern="(~)(\s*)([^\s{]+)">
    
  75.         <bygroups>
    
  76.           <token type="Punctuation"/>
    
  77.           <token type="Text"/>
    
  78.           <token type="LiteralStringRegex"/>
    
  79.         </bygroups>
    
  80.       </rule>
    
  81.       <rule pattern="[:=~]">
    
  82.         <token type="Punctuation"/>
    
  83.       </rule>
    
  84.       <rule pattern="[^\s;#{}$]+">
    
  85.         <token type="LiteralString"/>
    
  86.       </rule>
    
  87.       <rule pattern="/[^\s;#]*">
    
  88.         <token type="Name"/>
    
  89.       </rule>
    
  90.       <rule pattern="\s+">
    
  91.         <token type="Text"/>
    
  92.       </rule>
    
  93.       <rule pattern="[$;]">
    
  94.         <token type="Text"/>
    
  95.       </rule>
    
  96.     </state>
    
  97.   </rules>
    
  98. </lexer>