]> git.mxchange.org Git - friendica.git/blob - library/Text_Highlighter/sh.xml
Merge branch 'master' of github.com:annando/friendica
[friendica.git] / library / Text_Highlighter / sh.xml
1 <?xml version="1.0"?>
2 <!-- $Id: sh.xml,v 1.2 2007-06-14 00:15:50 ssttoo Exp $ -->
3
4 <highlight lang="sh" case = "yes">
5
6   <authors>
7     <author name="Noah Spurrier" email="noah@noah.org" />
8   </authors>
9
10   <comment>This highlighter is EXPERIMENTAL. It may work incorrectly.
11       It is a crude hack of the perl syntax, which itself wasn't so good.
12       But this seems to work OK.
13   </comment>
14
15   <default innerClass="code"/>
16
17   <block name="interpreter" match="/^(#!)(.*)/m" innerClass="special">
18    <partClass index="1" innerClass="special" />
19    <partClass index="2" innerClass="string" />
20   </block>
21
22   <!--
23   brackets
24   -->
25   <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}">
26     <contains all="yes"/>
27   </region>
28
29   <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)">
30     <contains all="yes"/>
31   </region>
32
33   <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]">
34     <contains all="yes"/>
35   </region>
36
37   <!--
38   use smth
39   -->
40   <block name="usestatement" match="(use)\s+([\w:]*)" innerClass="special">
41    <partClass index="1" innerClass="reserved" />
42    <partClass index="2" innerClass="special" />
43   </block>
44
45
46   <region name="q-w-q-statement"
47     start="/\b(q[wq]\s*((\{)|(\()|(\[)|(\&lt;)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\&gt;)(?(7)\7)))/Us"
48     end="%b2%"
49     innerClass="string" delimClass="quotes" remember="yes">
50
51     <contains block="containedvar"/>
52     <contains block="specialvar"/>
53     <contains block="curlyvar"/>
54
55   </region>
56
57   <region name="qstatement"
58     start="/\b(q\s*((\{)|(\()|(\[)|(\&lt;)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\&gt;)(?(7)\7)))/Us"
59     end="%b2%"
60     innerClass="string" delimClass="quotes" remember="yes">
61
62   </region>
63
64   <!--
65   comments
66   -->
67   <block name="comment" match="#.*" innerClass="comment" />
68
69
70   <!--
71   regexpr
72   FIXME: this should be rewritten
73   -->
74   <block name="dblregexprver1" match="/(s|tr) ([|#~`!@$%^&amp;*-+=\\;:'&quot;,.\/?])  ((\\.|[^\\])*?) (\2)((\\.|[^\\])*?)(\2[ecgimosx]*)/x" innerClass="string">
75    <partClass index="1" innerClass="quotes" />
76    <partClass index="2" innerClass="quotes" />
77    <partClass index="3" innerClass="string" />
78    <partClass index="5" innerClass="quotes" />
79    <partClass index="6" innerClass="string" />
80    <partClass index="8" innerClass="quotes" />
81   </block>
82
83   <block name="dblregexprver2" match="/(m) ([|#~`!@$%^&amp;*-+=\\;:'&quot;,.\/?])  ((\\.|[^\\])*?) (\2[ecgimosx]*)/x" innerClass="string">
84    <partClass index="1" innerClass="quotes" />
85    <partClass index="2" innerClass="quotes" />
86    <partClass index="3" innerClass="string" />
87    <partClass index="5" innerClass="quotes" />
88   </block>
89
90
91   <region name="regexp" start=" \/" end="\/[cgimosx]*" innerClass="string" delimClass="quotes" case="yes">
92     <contains block="reescaped"/>
93   </region>
94
95   <block name="reescaped" match="\\\/" innerClass="string" contained="yes">
96     <onlyin region="regexp"/>
97   </block>
98
99   <!--
100   variables
101   FIXME: @{...}
102   -->
103   <block name="bracketsvars" match="([a-z1-9_]+)(\s*=>)" innerClass="string" contained="yes" case="no">
104     <partClass index="1" innerClass="string" />
105     <partClass index="2" innerClass="code" />
106     <onlyin region="brackets"/>
107   </block>
108
109   <block name="specialvar" match="\$#?[1-9'`@!]" innerClass="var"/>
110
111   <block name="var" match="(\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/>
112   <block name="containedvar" match="\$([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/>
113
114   <block name="classvar" match="(\{)([a-z1-9]+)(\})" innerClass="var" case="no">
115    <partClass index="1" innerClass="brackets" />
116    <partClass index="2" innerClass="var" />
117    <partClass index="3" innerClass="brackets" />
118   </block>
119
120   <block name="curlyvar" match="[\$@%]#?\{[a-z1-9]+\}" innerClass="var" case="no"/>
121
122   <!--
123   quotes
124   -->
125   <region name="exec" delimClass="quotes" innerClass="string" start="`" end="`">
126     <contains block="containedvar"/>
127     <contains block="specialvar"/>
128     <contains block="curlyvar"/>
129   </region>
130
131   <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'"/>
132
133   <block name="escaped" match="\\\\|\\&quot;|\\'|\\`" innerClass="special" contained="yes">
134     <onlyin region="qstatement"/>
135     <onlyin region="strsingle"/>
136     <onlyin region="exec"/>
137   </block>
138
139   <region name="strdouble" delimClass="quotes" innerClass="string" start="&quot;" end="&quot;">
140     <contains block="containedvar"/>
141     <contains block="specialvar"/>
142     <contains block="curlyvar"/>
143   </region>
144
145   <block name="descaped" match="\\[\\&quot;'`tnr\$\{@]" innerClass="special" contained="yes">
146     <onlyin region="strdouble"/>
147     <onlyin region="q-w-q-statement"/>
148   </block>
149
150   <!-- logical op.
151   <block name="logic" match="\|\||&amp;&amp;" innerClass="reserved" contained="yes"/>-->
152
153   <!--
154   identifiers
155   -->
156   <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/>
157
158   <!--
159   numbers
160   -->
161   <block name="number" match="\d*\.?\d+" innerClass="number"/>
162
163   <!--
164   GNU and posix standard shell utilities here.
165   -->
166   <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes">
167       <keyword match="cd"/>
168       <keyword match="cp"/>
169       <keyword match="rm"/>
170       <keyword match="echo"/>
171       <keyword match="printf"/>
172       <keyword match="exit"/>
173       <keyword match="cut"/>
174       <keyword match="join"/>
175       <keyword match="comm"/>
176       <keyword match="fmt"/>
177       <keyword match="grep"/>
178       <keyword match="egrep"/>
179       <keyword match="fgrep"/>
180       <keyword match="sed"/>
181       <keyword match="awk"/>
182       <keyword match="yes"/>
183       <keyword match="false"/>
184       <keyword match="true"/>
185       <keyword match="test"/>
186       <keyword match="expr"/>
187       <keyword match="tee"/>
188       <keyword match="basename"/>
189       <keyword match="dirname"/>
190       <keyword match="pathchk"/>
191       <keyword match="pwd"/>
192       <keyword match="stty"/>
193       <keyword match="tty"/>
194       <keyword match="env"/>
195       <keyword match="printenv"/>
196       <keyword match="id"/>
197       <keyword match="logname"/>
198       <keyword match="whoami"/>
199       <keyword match="groups"/>
200       <keyword match="users"/>
201       <keyword match="who"/>
202       <keyword match="date"/>
203       <keyword match="uname"/>
204       <keyword match="hostname"/>
205       <keyword match="chroot"/>
206       <keyword match="nice"/>
207       <keyword match="nohup"/>
208       <keyword match="sleep"/>
209       <keyword match="factor"/>
210       <keyword match="seq"/>
211       <keyword match="getopt"/>
212       <keyword match="getopts"/>
213       <keyword match="options"/>
214       <keyword match="shift"/>
215   </keywords>
216
217   <keywords name="flowcontrol" inherits="identifier" innerClass="reserved" case = "yes">
218       <keyword match="if"/>
219       <keyword match="fi"/>
220       <keyword match="then"/>
221       <keyword match="else"/>
222       <keyword match="elif"/>
223       <keyword match="case"/>
224       <keyword match="esac"/>
225       <keyword match="while"/>
226       <keyword match="done"/>
227       <keyword match="for"/>
228       <keyword match="in"/>
229       <keyword match="function"/>
230       <keyword match="until"/>
231       <keyword match="do"/>
232       <keyword match="select"/>
233       <keyword match="time"/>
234       <!--
235       <keyword match="[["/>
236       <keyword match="]]"/>
237       -->
238       <keyword match="read"/>
239       <keyword match="set"/>
240   </keywords>
241
242 </highlight>