...
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>
View as plain text