pkgconfig.xml

 1<lexer>
 2  <config>
 3    <name>PkgConfig</name>
 4    <alias>pkgconfig</alias>
 5    <filename>*.pc</filename>
 6  </config>
 7  <rules>
 8    <state name="curly">
 9      <rule pattern="\}">
10        <token type="LiteralStringInterpol"/>
11        <pop depth="1"/>
12      </rule>
13      <rule pattern="\w+">
14        <token type="NameAttribute"/>
15      </rule>
16    </state>
17    <state name="spvalue">
18      <rule>
19        <include state="interp"/>
20      </rule>
21      <rule pattern="#.*$">
22        <token type="CommentSingle"/>
23        <pop depth="1"/>
24      </rule>
25      <rule pattern="\n">
26        <token type="Text"/>
27        <pop depth="1"/>
28      </rule>
29      <rule pattern="[^${}#\n]+">
30        <token type="Text"/>
31      </rule>
32      <rule pattern=".">
33        <token type="Text"/>
34      </rule>
35    </state>
36    <state name="root">
37      <rule pattern="#.*$">
38        <token type="CommentSingle"/>
39      </rule>
40      <rule pattern="^(\w+)(=)">
41        <bygroups>
42          <token type="NameAttribute"/>
43          <token type="Operator"/>
44        </bygroups>
45      </rule>
46      <rule pattern="^([\w.]+)(:)">
47        <bygroups>
48          <token type="NameTag"/>
49          <token type="Punctuation"/>
50        </bygroups>
51        <push state="spvalue"/>
52      </rule>
53      <rule>
54        <include state="interp"/>
55      </rule>
56      <rule pattern="[^${}#=:\n.]+">
57        <token type="Text"/>
58      </rule>
59      <rule pattern=".">
60        <token type="Text"/>
61      </rule>
62    </state>
63    <state name="interp">
64      <rule pattern="\$\$">
65        <token type="Text"/>
66      </rule>
67      <rule pattern="\$\{">
68        <token type="LiteralStringInterpol"/>
69        <push state="curly"/>
70      </rule>
71    </state>
72  </rules>
73</lexer>