66
|
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> |