...
1<lexer>
2 <config>
3 <name>Groff</name>
4 <alias>groff</alias>
5 <alias>nroff</alias>
6 <alias>man</alias>
7 <filename>*.[1-9]</filename>
8 <filename>*.1p</filename>
9 <filename>*.3pm</filename>
10 <filename>*.man</filename>
11 <mime_type>application/x-troff</mime_type>
12 <mime_type>text/troff</mime_type>
13 </config>
14 <rules>
15 <state name="request">
16 <rule pattern="\n">
17 <token type="Text"/>
18 <pop depth="1"/>
19 </rule>
20 <rule>
21 <include state="escapes"/>
22 </rule>
23 <rule pattern=""[^\n"]+"">
24 <token type="LiteralStringDouble"/>
25 </rule>
26 <rule pattern="\d+">
27 <token type="LiteralNumber"/>
28 </rule>
29 <rule pattern="\S+">
30 <token type="LiteralString"/>
31 </rule>
32 <rule pattern="\s+">
33 <token type="Text"/>
34 </rule>
35 </state>
36 <state name="root">
37 <rule pattern="(\.)(\w+)">
38 <bygroups>
39 <token type="Text"/>
40 <token type="Keyword"/>
41 </bygroups>
42 <push state="request"/>
43 </rule>
44 <rule pattern="\.">
45 <token type="Punctuation"/>
46 <push state="request"/>
47 </rule>
48 <rule pattern="[^\\\n]+">
49 <token type="Text"/>
50 <push state="textline"/>
51 </rule>
52 <rule>
53 <push state="textline"/>
54 </rule>
55 </state>
56 <state name="textline">
57 <rule>
58 <include state="escapes"/>
59 </rule>
60 <rule pattern="[^\\\n]+">
61 <token type="Text"/>
62 </rule>
63 <rule pattern="\n">
64 <token type="Text"/>
65 <pop depth="1"/>
66 </rule>
67 </state>
68 <state name="escapes">
69 <rule pattern="\\"[^\n]*">
70 <token type="Comment"/>
71 </rule>
72 <rule pattern="\\[fn]\w">
73 <token type="LiteralStringEscape"/>
74 </rule>
75 <rule pattern="\\\(.{2}">
76 <token type="LiteralStringEscape"/>
77 </rule>
78 <rule pattern="\\.\[.*\]">
79 <token type="LiteralStringEscape"/>
80 </rule>
81 <rule pattern="\\.">
82 <token type="LiteralStringEscape"/>
83 </rule>
84 <rule pattern="\\\n">
85 <token type="Text"/>
86 <push state="request"/>
87 </rule>
88 </state>
89 </rules>
90</lexer>
View as plain text