...
1<lexer>
2 <config>
3 <name>Matlab</name>
4 <alias>matlab</alias>
5 <filename>*.m</filename>
6 <mime_type>text/matlab</mime_type>
7 </config>
8 <rules>
9 <state name="blockcomment">
10 <rule pattern="^\s*%\}">
11 <token type="CommentMultiline"/>
12 <pop depth="1"/>
13 </rule>
14 <rule pattern="^.*\n">
15 <token type="CommentMultiline"/>
16 </rule>
17 <rule pattern=".">
18 <token type="CommentMultiline"/>
19 </rule>
20 </state>
21 <state name="deffunc">
22 <rule pattern="(\s*)(?:(.+)(\s*)(=)(\s*))?(.+)(\()(.*)(\))(\s*)">
23 <bygroups>
24 <token type="TextWhitespace"/>
25 <token type="Text"/>
26 <token type="TextWhitespace"/>
27 <token type="Punctuation"/>
28 <token type="TextWhitespace"/>
29 <token type="NameFunction"/>
30 <token type="Punctuation"/>
31 <token type="Text"/>
32 <token type="Punctuation"/>
33 <token type="TextWhitespace"/>
34 </bygroups>
35 <pop depth="1"/>
36 </rule>
37 <rule pattern="(\s*)([a-zA-Z_]\w*)">
38 <bygroups>
39 <token type="Text"/>
40 <token type="NameFunction"/>
41 </bygroups>
42 <pop depth="1"/>
43 </rule>
44 </state>
45 <state name="root">
46 <rule pattern="\n">
47 <token type="Text"/>
48 </rule>
49 <rule pattern="^!.*">
50 <token type="LiteralStringOther"/>
51 </rule>
52 <rule pattern="%\{\s*\n">
53 <token type="CommentMultiline"/>
54 <push state="blockcomment"/>
55 </rule>
56 <rule pattern="%.*$">
57 <token type="Comment"/>
58 </rule>
59 <rule pattern="^\s*function">
60 <token type="Keyword"/>
61 <push state="deffunc"/>
62 </rule>
63 <rule pattern="(properties|persistent|enumerated|otherwise|continue|function|classdef|methods|elseif|events|switch|return|global|parfor|catch|break|while|else|spmd|case|try|end|for|if)\b">
64 <token type="Keyword"/>
65 </rule>
66 <rule pattern="(sin|sind|sinh|asin|asind|asinh|cos|cosd|cosh|acos|acosd|acosh|tan|tand|tanh|atan|atand|atan2|atanh|sec|secd|sech|asec|asecd|asech|csc|cscd|csch|acsc|acscd|acsch|cot|cotd|coth|acot|acotd|acoth|hypot|exp|expm1|log|log1p|log10|log2|pow2|realpow|reallog|realsqrt|sqrt|nthroot|nextpow2|abs|angle|complex|conj|imag|real|unwrap|isreal|cplxpair|fix|floor|ceil|round|mod|rem|sign|airy|besselj|bessely|besselh|besseli|besselk|beta|betainc|betaln|ellipj|ellipke|erf|erfc|erfcx|erfinv|expint|gamma|gammainc|gammaln|psi|legendre|cross|dot|factor|isprime|primes|gcd|lcm|rat|rats|perms|nchoosek|factorial|cart2sph|cart2pol|pol2cart|sph2cart|hsv2rgb|rgb2hsv|zeros|ones|eye|repmat|rand|randn|linspace|logspace|freqspace|meshgrid|accumarray|size|length|ndims|numel|disp|isempty|isequal|isequalwithequalnans|cat|reshape|diag|blkdiag|tril|triu|fliplr|flipud|flipdim|rot90|find|end|sub2ind|ind2sub|bsxfun|ndgrid|permute|ipermute|shiftdim|circshift|squeeze|isscalar|isvector|ans|eps|realmax|realmin|pi|i|inf|nan|isnan|isinf|isfinite|j|why|compan|gallery|hadamard|hankel|hilb|invhilb|magic|pascal|rosser|toeplitz|vander|wilkinson)\b">
67 <token type="NameBuiltin"/>
68 </rule>
69 <rule pattern="\.\.\..*$">
70 <token type="Comment"/>
71 </rule>
72 <rule pattern="-|==|~=|<|>|<=|>=|&&|&|~|\|\|?">
73 <token type="Operator"/>
74 </rule>
75 <rule pattern="\.\*|\*|\+|\.\^|\.\\|\.\/|\/|\\">
76 <token type="Operator"/>
77 </rule>
78 <rule pattern="\[|\]|\(|\)|\{|\}|:|@|\.|,">
79 <token type="Punctuation"/>
80 </rule>
81 <rule pattern="=|:|;">
82 <token type="Punctuation"/>
83 </rule>
84 <rule pattern="(?<=[\w)\].])\'+">
85 <token type="Operator"/>
86 </rule>
87 <rule pattern="(\d+\.\d*|\d*\.\d+)([eEf][+-]?[0-9]+)?">
88 <token type="LiteralNumberFloat"/>
89 </rule>
90 <rule pattern="\d+[eEf][+-]?[0-9]+">
91 <token type="LiteralNumberFloat"/>
92 </rule>
93 <rule pattern="\d+">
94 <token type="LiteralNumberInteger"/>
95 </rule>
96 <rule pattern="(?<![\w)\].])\'">
97 <token type="LiteralString"/>
98 <push state="string"/>
99 </rule>
100 <rule pattern="[a-zA-Z_]\w*">
101 <token type="Name"/>
102 </rule>
103 <rule pattern=".">
104 <token type="Text"/>
105 </rule>
106 </state>
107 <state name="string">
108 <rule pattern="[^\']*\'">
109 <token type="LiteralString"/>
110 <pop depth="1"/>
111 </rule>
112 </state>
113 </rules>
114</lexer>
View as plain text