...
1<lexer>
2 <config>
3 <name>Bash</name>
4 <alias>bash</alias>
5 <alias>sh</alias>
6 <alias>ksh</alias>
7 <alias>zsh</alias>
8 <alias>shell</alias>
9 <filename>*.sh</filename>
10 <filename>*.ksh</filename>
11 <filename>*.bash</filename>
12 <filename>*.ebuild</filename>
13 <filename>*.eclass</filename>
14 <filename>.env</filename>
15 <filename>*.env</filename>
16 <filename>*.exheres-0</filename>
17 <filename>*.exlib</filename>
18 <filename>*.zsh</filename>
19 <filename>*.zshrc</filename>
20 <filename>.bashrc</filename>
21 <filename>bashrc</filename>
22 <filename>.bash_*</filename>
23 <filename>bash_*</filename>
24 <filename>zshrc</filename>
25 <filename>.zshrc</filename>
26 <filename>PKGBUILD</filename>
27 <mime_type>application/x-sh</mime_type>
28 <mime_type>application/x-shellscript</mime_type>
29 </config>
30 <rules>
31 <state name="data">
32 <rule pattern="(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\$])*"">
33 <token type="LiteralStringDouble"/>
34 </rule>
35 <rule pattern=""">
36 <token type="LiteralStringDouble"/>
37 <push state="string"/>
38 </rule>
39 <rule pattern="(?s)\$'(\\\\|\\[0-7]+|\\.|[^'\\])*'">
40 <token type="LiteralStringSingle"/>
41 </rule>
42 <rule pattern="(?s)'.*?'">
43 <token type="LiteralStringSingle"/>
44 </rule>
45 <rule pattern=";">
46 <token type="Punctuation"/>
47 </rule>
48 <rule pattern="&">
49 <token type="Punctuation"/>
50 </rule>
51 <rule pattern="\|">
52 <token type="Punctuation"/>
53 </rule>
54 <rule pattern="\s+">
55 <token type="Text"/>
56 </rule>
57 <rule pattern="\d+(?= |$)">
58 <token type="LiteralNumber"/>
59 </rule>
60 <rule pattern="[^=\s\[\]{}()$"\'`\\<&|;]+">
61 <token type="Text"/>
62 </rule>
63 <rule pattern="<">
64 <token type="Text"/>
65 </rule>
66 </state>
67 <state name="string">
68 <rule pattern=""">
69 <token type="LiteralStringDouble"/>
70 <pop depth="1"/>
71 </rule>
72 <rule pattern="(?s)(\\\\|\\[0-7]+|\\.|[^"\\$])+">
73 <token type="LiteralStringDouble"/>
74 </rule>
75 <rule>
76 <include state="interp"/>
77 </rule>
78 </state>
79 <state name="interp">
80 <rule pattern="\$\(\(">
81 <token type="Keyword"/>
82 <push state="math"/>
83 </rule>
84 <rule pattern="\$\(">
85 <token type="Keyword"/>
86 <push state="paren"/>
87 </rule>
88 <rule pattern="\$\{#?">
89 <token type="LiteralStringInterpol"/>
90 <push state="curly"/>
91 </rule>
92 <rule pattern="\$[a-zA-Z_]\w*">
93 <token type="NameVariable"/>
94 </rule>
95 <rule pattern="\$(?:\d+|[#$?!_*@-])">
96 <token type="NameVariable"/>
97 </rule>
98 <rule pattern="\$">
99 <token type="Text"/>
100 </rule>
101 </state>
102 <state name="paren">
103 <rule pattern="\)">
104 <token type="Keyword"/>
105 <pop depth="1"/>
106 </rule>
107 <rule>
108 <include state="root"/>
109 </rule>
110 </state>
111 <state name="math">
112 <rule pattern="\)\)">
113 <token type="Keyword"/>
114 <pop depth="1"/>
115 </rule>
116 <rule pattern="[-+*/%^|&]|\*\*|\|\|">
117 <token type="Operator"/>
118 </rule>
119 <rule pattern="\d+#\d+">
120 <token type="LiteralNumber"/>
121 </rule>
122 <rule pattern="\d+#(?! )">
123 <token type="LiteralNumber"/>
124 </rule>
125 <rule pattern="\d+">
126 <token type="LiteralNumber"/>
127 </rule>
128 <rule>
129 <include state="root"/>
130 </rule>
131 </state>
132 <state name="backticks">
133 <rule pattern="`">
134 <token type="LiteralStringBacktick"/>
135 <pop depth="1"/>
136 </rule>
137 <rule>
138 <include state="root"/>
139 </rule>
140 </state>
141 <state name="root">
142 <rule>
143 <include state="basic"/>
144 </rule>
145 <rule pattern="`">
146 <token type="LiteralStringBacktick"/>
147 <push state="backticks"/>
148 </rule>
149 <rule>
150 <include state="data"/>
151 </rule>
152 <rule>
153 <include state="interp"/>
154 </rule>
155 </state>
156 <state name="basic">
157 <rule pattern="\b(if|fi|else|while|do|done|for|then|return|function|case|select|continue|until|esac|elif)(\s*)\b">
158 <bygroups>
159 <token type="Keyword"/>
160 <token type="Text"/>
161 </bygroups>
162 </rule>
163 <rule pattern="\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|declare|dirs|disown|echo|enable|eval|exec|exit|export|false|fc|fg|getopts|hash|help|history|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|set|shift|shopt|source|suspend|test|time|times|trap|true|type|typeset|ulimit|umask|unalias|unset|wait)(?=[\s)`])">
164 <token type="NameBuiltin"/>
165 </rule>
166 <rule pattern="\A#!.+\n">
167 <token type="CommentPreproc"/>
168 </rule>
169 <rule pattern="#.*(\S|$)">
170 <token type="CommentSingle"/>
171 </rule>
172 <rule pattern="\\[\w\W]">
173 <token type="LiteralStringEscape"/>
174 </rule>
175 <rule pattern="(\b\w+)(\s*)(\+?=)">
176 <bygroups>
177 <token type="NameVariable"/>
178 <token type="Text"/>
179 <token type="Operator"/>
180 </bygroups>
181 </rule>
182 <rule pattern="[\[\]{}()=]">
183 <token type="Operator"/>
184 </rule>
185 <rule pattern="<<<">
186 <token type="Operator"/>
187 </rule>
188 <rule pattern="<<-?\s*(\'?)\\?(\w+)[\w\W]+?\2">
189 <token type="LiteralString"/>
190 </rule>
191 <rule pattern="&&|\|\|">
192 <token type="Operator"/>
193 </rule>
194 </state>
195 <state name="curly">
196 <rule pattern="\}">
197 <token type="LiteralStringInterpol"/>
198 <pop depth="1"/>
199 </rule>
200 <rule pattern=":-">
201 <token type="Keyword"/>
202 </rule>
203 <rule pattern="\w+">
204 <token type="NameVariable"/>
205 </rule>
206 <rule pattern="[^}:"\'`$\\]+">
207 <token type="Punctuation"/>
208 </rule>
209 <rule pattern=":">
210 <token type="Punctuation"/>
211 </rule>
212 <rule>
213 <include state="root"/>
214 </rule>
215 </state>
216 </rules>
217</lexer>
View as plain text