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