1<lexer>
2 <config>
3 <name>Mason</name>
4 <alias>mason</alias>
5 <filename>*.m</filename>
6 <filename>*.mhtml</filename>
7 <filename>*.mc</filename>
8 <filename>*.mi</filename>
9 <filename>autohandler</filename>
10 <filename>dhandler</filename>
11 <mime_type>application/x-mason</mime_type>
12 <priority>0.1</priority>
13 </config>
14 <rules>
15 <state name="root">
16 <rule pattern="\s+">
17 <token type="Text"/>
18 </rule>
19 <rule pattern="(<%doc>)(.*?)(</%doc>)(?s)">
20 <bygroups>
21 <token type="NameTag"/>
22 <token type="CommentMultiline"/>
23 <token type="NameTag"/>
24 </bygroups>
25 </rule>
26 <rule pattern="(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)(?s)">
27 <bygroups>
28 <token type="NameTag"/>
29 <token type="Text"/>
30 <token type="NameFunction"/>
31 <token type="NameTag"/>
32 <usingself state="root"/>
33 <token type="NameTag"/>
34 </bygroups>
35 </rule>
36 <rule pattern="(<%\w+)(.*?)(>)(.*?)(</%\2\s*>)(?s)">
37 <bygroups>
38 <token type="NameTag"/>
39 <token type="NameFunction"/>
40 <token type="NameTag"/>
41 <using lexer="Perl"/>
42 <token type="NameTag"/>
43 </bygroups>
44 </rule>
45 <rule pattern="(<&[^|])(.*?)(,.*?)?(&>)(?s)">
46 <bygroups>
47 <token type="NameTag"/>
48 <token type="NameFunction"/>
49 <using lexer="Perl"/>
50 <token type="NameTag"/>
51 </bygroups>
52 </rule>
53 <rule pattern="(<&\|)(.*?)(,.*?)?(&>)(?s)">
54 <bygroups>
55 <token type="NameTag"/>
56 <token type="NameFunction"/>
57 <using lexer="Perl"/>
58 <token type="NameTag"/>
59 </bygroups>
60 </rule>
61 <rule pattern="</&>">
62 <token type="NameTag"/>
63 </rule>
64 <rule pattern="(<%!?)(.*?)(%>)(?s)">
65 <bygroups>
66 <token type="NameTag"/>
67 <using lexer="Perl"/>
68 <token type="NameTag"/>
69 </bygroups>
70 </rule>
71 <rule pattern="(?<=^)#[^\n]*(\n|\Z)">
72 <token type="Comment"/>
73 </rule>
74 <rule pattern="(?<=^)(%)([^\n]*)(\n|\Z)">
75 <bygroups>
76 <token type="NameTag"/>
77 <using lexer="Perl"/>
78 <token type="Other"/>
79 </bygroups>
80 </rule>
81 <rule pattern="(?sx)
 (.+?) # anything, followed by:
 (?:
 (?<=\n)(?=[%#]) | # an eval or comment line
 (?=</?[%&]) | # a substitution or block or
 # call start or end
 # - don't consume
 (\\\n) | # an escaped newline
 \Z # end of string
 )">
82 <bygroups>
83 <using lexer="HTML"/>
84 <token type="Operator"/>
85 </bygroups>
86 </rule>
87 </state>
88 </rules>
89</lexer>