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="(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)">
 62        <token type="Name"/>
 63      </rule>
 64      <rule pattern="([a-z0-9.-]+)(:)([0-9]+)">
 65        <bygroups>
 66          <token type="Name"/>
 67          <token type="Punctuation"/>
 68          <token type="LiteralNumberInteger"/>
 69        </bygroups>
 70      </rule>
 71      <rule pattern="[a-z-]+/[a-z-+]+">
 72        <token type="LiteralString"/>
 73      </rule>
 74      <rule pattern="[0-9]+[km]?\b">
 75        <token type="LiteralNumberInteger"/>
 76      </rule>
 77      <rule pattern="(~)(\s*)([^\s{]+)">
 78        <bygroups>
 79          <token type="Punctuation"/>
 80          <token type="Text"/>
 81          <token type="LiteralStringRegex"/>
 82        </bygroups>
 83      </rule>
 84      <rule pattern="[:=~]">
 85        <token type="Punctuation"/>
 86      </rule>
 87      <rule pattern="[^\s;#{}$]+">
 88        <token type="LiteralString"/>
 89      </rule>
 90      <rule pattern="/[^\s;#]*">
 91        <token type="Name"/>
 92      </rule>
 93      <rule pattern="\s+">
 94        <token type="Text"/>
 95      </rule>
 96      <rule pattern="[$;]">
 97        <token type="Text"/>
 98      </rule>
 99    </state>
100  </rules>
101</lexer>