1 <?xml version="1.0"?>
\r
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
\r
4 <!-- RetroForth is one of the nicest Forth implementations, so we
\r
5 support that one. You can extend this to your own Forth's vocabulary
\r
10 <PROPERTY NAME="indentNextLines" VALUE="^:[^;]*" />
\r
11 <PROPERTY NAME="unindentNextLines" VALUE="^.*;$" />
\r
12 <PROPERTY NAME="commentStart" VALUE="(" />
\r
13 <PROPERTY NAME="commentEnd" VALUE=")" />
\r
14 <PROPERTY NAME="lineComment" VALUE="|" />
\r
15 <PROPERTY NAME="noWordSep" VALUE="+-*=><;.?/'()%,_|$" />
\r
17 <RULES IGNORE_CASE="FALSE"
\r
18 NO_WORD_SEP="+-*=><;.?/'"()%,_$"
\r
19 HIGHLIGHT_DIGITS="TRUE"
\r
20 DIGIT_RE="|-?\d+([./]\d+)?">
\r
22 <EOL_SPAN TYPE="COMMENT1" AT_WORD_START="TRUE">| </EOL_SPAN>
\r
24 <MARK_FOLLOWING TYPE="DIGIT" AT_WORD_START="TRUE">$</MARK_FOLLOWING>
\r
25 <MARK_FOLLOWING TYPE="LITERAL3" AT_WORD_START="TRUE">'</MARK_FOLLOWING>
\r
27 <!-- parsing words -->
\r
28 <SEQ_REGEXP TYPE="MARKUP"
\r
30 AT_WORD_START="TRUE">:\s+(\S+)</SEQ_REGEXP>
\r
32 <SPAN TYPE="COMMENT3" DELEGATE="STACK_EFFECT">
\r
37 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE"
\r
38 AT_WORD_START="TRUE">
\r
43 <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE"
\r
44 AT_WORD_START="TRUE">
\r
49 <SPAN TYPE="LITERAL3" NO_LINE_BREAK="TRUE"
\r
50 AT_WORD_START="TRUE">
\r
55 <SPAN TYPE="LITERAL3" NO_LINE_BREAK="TRUE"
\r
56 AT_WORD_START="TRUE">
\r
61 <SPAN TYPE="LITERAL4" NO_LINE_BREAK="TRUE"
\r
62 AT_WORD_START="TRUE">
\r
72 <KEYWORD1>swap</KEYWORD1>
\r
73 <KEYWORD1>drop</KEYWORD1>
\r
74 <KEYWORD1>dup</KEYWORD1>
\r
75 <KEYWORD1>nip</KEYWORD1>
\r
76 <KEYWORD1>over</KEYWORD1>
\r
77 <KEYWORD1>rot</KEYWORD1>
\r
78 <KEYWORD1>-rot</KEYWORD1>
\r
79 <KEYWORD1>2dup</KEYWORD1>
\r
80 <KEYWORD1>2drop</KEYWORD1>
\r
81 <KEYWORD1>2over</KEYWORD1>
\r
82 <KEYWORD1>2swap</KEYWORD1>
\r
83 <KEYWORD1>>r</KEYWORD1>
\r
84 <KEYWORD1>r></KEYWORD1>
\r
86 <KEYWORD2>and</KEYWORD2>
\r
87 <KEYWORD2>or</KEYWORD2>
\r
88 <KEYWORD2>xor</KEYWORD2>
\r
89 <KEYWORD2>>></KEYWORD2>
\r
90 <KEYWORD2><<</KEYWORD2>
\r
91 <KEYWORD2>not</KEYWORD2>
\r
92 <KEYWORD2>+</KEYWORD2>
\r
93 <KEYWORD2>*</KEYWORD2>
\r
94 <KEYWORD2>negate</KEYWORD2>
\r
95 <KEYWORD2>-</KEYWORD2>
\r
96 <KEYWORD2>/</KEYWORD2>
\r
97 <KEYWORD2>mod</KEYWORD2>
\r
98 <KEYWORD2>/mod</KEYWORD2>
\r
99 <KEYWORD2>*/</KEYWORD2>
\r
100 <KEYWORD2>1+</KEYWORD2>
\r
101 <KEYWORD2>1-</KEYWORD2>
\r
102 <KEYWORD2>base</KEYWORD2>
\r
103 <KEYWORD2>hex</KEYWORD2>
\r
104 <KEYWORD2>decimal</KEYWORD2>
\r
105 <KEYWORD2>binary</KEYWORD2>
\r
106 <KEYWORD2>octal</KEYWORD2>
\r
108 <KEYWORD3>@</KEYWORD3>
\r
109 <KEYWORD3>!</KEYWORD3>
\r
110 <KEYWORD3>c@</KEYWORD3>
\r
111 <KEYWORD3>c!</KEYWORD3>
\r
112 <KEYWORD3>+!</KEYWORD3>
\r
113 <KEYWORD3>cell+</KEYWORD3>
\r
114 <KEYWORD3>cells</KEYWORD3>
\r
115 <KEYWORD3>char+</KEYWORD3>
\r
116 <KEYWORD3>chars</KEYWORD3>
\r
118 <KEYWORD4>[</KEYWORD4>
\r
119 <KEYWORD4>]</KEYWORD4>
\r
120 <KEYWORD4>create</KEYWORD4>
\r
121 <KEYWORD4>does></KEYWORD4>
\r
122 <KEYWORD4>variable</KEYWORD4>
\r
123 <KEYWORD4>variable,</KEYWORD4>
\r
124 <KEYWORD4>literal</KEYWORD4>
\r
125 <KEYWORD4>last</KEYWORD4>
\r
126 <KEYWORD4>1,</KEYWORD4>
\r
127 <KEYWORD4>2,</KEYWORD4>
\r
128 <KEYWORD4>3,</KEYWORD4>
\r
129 <KEYWORD4>,</KEYWORD4>
\r
130 <KEYWORD4>here</KEYWORD4>
\r
131 <KEYWORD4>allot</KEYWORD4>
\r
132 <KEYWORD4>parse</KEYWORD4>
\r
133 <KEYWORD4>find</KEYWORD4>
\r
134 <KEYWORD4>compile</KEYWORD4>
\r
136 <OPERATOR>if</OPERATOR>
\r
137 <OPERATOR>=if</OPERATOR>
\r
138 <OPERATOR><if</OPERATOR>
\r
139 <OPERATOR>>if</OPERATOR>
\r
140 <OPERATOR><>if</OPERATOR>
\r
141 <OPERATOR>then</OPERATOR>
\r
142 <OPERATOR>repeat</OPERATOR>
\r
143 <OPERATOR>until</OPERATOR>
\r
145 <OPERATOR>forth</OPERATOR>
\r
146 <OPERATOR>macro</OPERATOR>
\r
150 <RULES SET="STACK_EFFECT" DEFAULT="COMMENT4">
\r
151 <SEQ TYPE="COMMENT3">--</SEQ>
\r