nginx_configuration_file.xml

 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>