69 r'r>|r@|recurse|repeat|rot|rshift|s\"|s>d|' |
62 r'r>|r@|recurse|repeat|rot|rshift|s\"|s>d|' |
70 r'sign|sm\/rem|source|space|spaces|state|swap|' |
63 r'sign|sm\/rem|source|space|spaces|state|swap|' |
71 r'then|type|u\.|u\<|um\*|um\/mod|unloop|until|' |
64 r'then|type|u\.|u\<|um\*|um\/mod|unloop|until|' |
72 r'variable|while|word|xor|\[char\]|\[\'\]|' |
65 r'variable|while|word|xor|\[char\]|\[\'\]|' |
73 r'@|!|\#|<\#|\#>|:|;|\+|-|\*|\/|,|<|>|\|1\+|1-|\.|' |
66 r'@|!|\#|<\#|\#>|:|;|\+|-|\*|\/|,|<|>|\|1\+|1-|\.|' |
74 # *** Wordset CORE-EXT |
67 # *** Wordset CORE-EXT |
75 r'\.r|0<>|' |
68 r'\.r|0<>|' |
76 r'0>|2>r|2r>|2r@|:noname|\?do|again|c\"|' |
69 r'0>|2>r|2r>|2r@|:noname|\?do|again|c\"|' |
77 r'case|compile,|endcase|endof|erase|false|' |
70 r'case|compile,|endcase|endof|erase|false|' |
78 r'hex|marker|nip|of|pad|parse|pick|refill|' |
71 r'hex|marker|nip|of|pad|parse|pick|refill|' |
79 r'restore-input|roll|save-input|source-id|to|' |
72 r'restore-input|roll|save-input|source-id|to|' |
80 r'true|tuck|u\.r|u>|unused|value|within|' |
73 r'true|tuck|u\.r|u>|unused|value|within|' |
81 r'\[compile\]|' |
74 r'\[compile\]|' |
82 # *** Wordset CORE-EXT-obsolescent |
75 # *** Wordset CORE-EXT-obsolescent |
83 r'\#tib|convert|expect|query|span|' |
76 r'\#tib|convert|expect|query|span|' |
84 r'tib|' |
77 r'tib|' |
85 # *** Wordset DOUBLE |
78 # *** Wordset DOUBLE |
86 r'2constant|2literal|2variable|d\+|d-|' |
79 r'2constant|2literal|2variable|d\+|d-|' |
87 r'd\.|d\.r|d0<|d0=|d2\*|d2\/|d<|d=|d>s|' |
80 r'd\.|d\.r|d0<|d0=|d2\*|d2\/|d<|d=|d>s|' |
88 r'dabs|dmax|dmin|dnegate|m\*\/|m\+|' |
81 r'dabs|dmax|dmin|dnegate|m\*\/|m\+|' |
89 # *** Wordset DOUBLE-EXT |
82 # *** Wordset DOUBLE-EXT |
90 r'2rot|du<|' |
83 r'2rot|du<|' |
91 # *** Wordset EXCEPTION |
84 # *** Wordset EXCEPTION |
92 r'catch|throw|' |
85 r'catch|throw|' |
93 # *** Wordset EXCEPTION-EXT |
86 # *** Wordset EXCEPTION-EXT |
94 r'abort|abort\"|' |
87 r'abort|abort\"|' |
95 # *** Wordset FACILITY |
88 # *** Wordset FACILITY |
96 r'at-xy|key\?|page|' |
89 r'at-xy|key\?|page|' |
97 # *** Wordset FACILITY-EXT |
90 # *** Wordset FACILITY-EXT |
98 r'ekey|ekey>char|ekey\?|emit\?|ms|time&date|' |
91 r'ekey|ekey>char|ekey\?|emit\?|ms|time&date|' |
99 # *** Wordset FILE |
92 # *** Wordset FILE |
100 r'BIN|CLOSE-FILE|CREATE-FILE|DELETE-FILE|FILE-POSITION|' |
93 r'BIN|CLOSE-FILE|CREATE-FILE|DELETE-FILE|FILE-POSITION|' |
101 r'FILE-SIZE|INCLUDE-FILE|INCLUDED|OPEN-FILE|R\/O|' |
94 r'FILE-SIZE|INCLUDE-FILE|INCLUDED|OPEN-FILE|R\/O|' |
102 r'R\/W|READ-FILE|READ-LINE|REPOSITION-FILE|RESIZE-FILE|' |
95 r'R\/W|READ-FILE|READ-LINE|REPOSITION-FILE|RESIZE-FILE|' |
103 r'S\"|SOURCE-ID|W/O|WRITE-FILE|WRITE-LINE|' |
96 r'S\"|SOURCE-ID|W/O|WRITE-FILE|WRITE-LINE|' |
104 # *** Wordset FILE-EXT |
97 # *** Wordset FILE-EXT |
105 r'FILE-STATUS|FLUSH-FILE|REFILL|RENAME-FILE|' |
98 r'FILE-STATUS|FLUSH-FILE|REFILL|RENAME-FILE|' |
106 # *** Wordset FLOAT |
99 # *** Wordset FLOAT |
107 r'>float|d>f|' |
100 r'>float|d>f|' |
108 r'f!|f\*|f\+|f-|f\/|f0<|f0=|f<|f>d|f@|' |
101 r'f!|f\*|f\+|f-|f\/|f0<|f0=|f<|f>d|f@|' |
109 r'falign|faligned|fconstant|fdepth|fdrop|fdup|' |
102 r'falign|faligned|fconstant|fdepth|fdrop|fdup|' |
110 r'fliteral|float\+|floats|floor|fmax|fmin|' |
103 r'fliteral|float\+|floats|floor|fmax|fmin|' |
111 r'fnegate|fover|frot|fround|fswap|fvariable|' |
104 r'fnegate|fover|frot|fround|fswap|fvariable|' |
112 r'represent|' |
105 r'represent|' |
113 # *** Wordset FLOAT-EXT |
106 # *** Wordset FLOAT-EXT |
114 r'df!|df@|dfalign|dfaligned|dfloat\+|' |
107 r'df!|df@|dfalign|dfaligned|dfloat\+|' |
115 r'dfloats|f\*\*|f\.|fabs|facos|facosh|falog|' |
108 r'dfloats|f\*\*|f\.|fabs|facos|facosh|falog|' |
116 r'fasin|fasinh|fatan|fatan2|fatanh|fcos|fcosh|' |
109 r'fasin|fasinh|fatan|fatan2|fatanh|fcos|fcosh|' |
117 r'fe\.|fexp|fexpm1|fln|flnp1|flog|fs\.|fsin|' |
110 r'fe\.|fexp|fexpm1|fln|flnp1|flog|fs\.|fsin|' |
118 r'fsincos|fsinh|fsqrt|ftan|ftanh|f~|precision|' |
111 r'fsincos|fsinh|fsqrt|ftan|ftanh|f~|precision|' |
119 r'set-precision|sf!|sf@|sfalign|sfaligned|sfloat\+|' |
112 r'set-precision|sf!|sf@|sfalign|sfaligned|sfloat\+|' |
120 r'sfloats|' |
113 r'sfloats|' |
121 # *** Wordset LOCAL |
114 # *** Wordset LOCAL |
122 r'\(local\)|to|' |
115 r'\(local\)|to|' |
123 # *** Wordset LOCAL-EXT |
116 # *** Wordset LOCAL-EXT |
124 r'locals\||' |
117 r'locals\||' |
125 # *** Wordset MEMORY |
118 # *** Wordset MEMORY |
126 r'allocate|free|resize|' |
119 r'allocate|free|resize|' |
127 # *** Wordset SEARCH |
120 # *** Wordset SEARCH |
128 r'definitions|find|forth-wordlist|get-current|' |
121 r'definitions|find|forth-wordlist|get-current|' |
129 r'get-order|search-wordlist|set-current|set-order|' |
122 r'get-order|search-wordlist|set-current|set-order|' |
130 r'wordlist|' |
123 r'wordlist|' |
131 # *** Wordset SEARCH-EXT |
124 # *** Wordset SEARCH-EXT |
132 r'also|forth|only|order|previous|' |
125 r'also|forth|only|order|previous|' |
133 # *** Wordset STRING |
126 # *** Wordset STRING |
134 r'-trailing|\/string|blank|cmove|cmove>|compare|' |
127 r'-trailing|\/string|blank|cmove|cmove>|compare|' |
135 r'search|sliteral|' |
128 r'search|sliteral|' |
136 # *** Wordset TOOLS |
129 # *** Wordset TOOLS |
137 r'.s|dump|see|words|' |
130 r'.s|dump|see|words|' |
138 # *** Wordset TOOLS-EXT |
131 # *** Wordset TOOLS-EXT |
139 r';code|' |
132 r';code|' |
140 r'ahead|assembler|bye|code|cs-pick|cs-roll|' |
133 r'ahead|assembler|bye|code|cs-pick|cs-roll|' |
141 r'editor|state|\[else\]|\[if\]|\[then\]|' |
134 r'editor|state|\[else\]|\[if\]|\[then\]|' |
142 # *** Wordset TOOLS-EXT-obsolescent |
135 # *** Wordset TOOLS-EXT-obsolescent |
143 r'forget|' |
136 r'forget|' |
144 # Forth 2012 |
137 # Forth 2012 |
145 r'defer|defer@|defer!|action-of|begin-structure|field:|buffer:|' |
138 r'defer|defer@|defer!|action-of|begin-structure|field:|buffer:|' |
146 r'parse-name|buffer:|traverse-wordlist|n>r|nr>|2value|fvalue|' |
139 r'parse-name|buffer:|traverse-wordlist|n>r|nr>|2value|fvalue|' |
147 r'name>interpret|name>compile|name>string|' |
140 r'name>interpret|name>compile|name>string|' |
148 r'cfield:|end-structure)'+delimiter, Keyword), |
141 r'cfield:|end-structure)(?!\S)', Keyword), |
149 |
142 |
150 # Numbers |
143 # Numbers |
151 (r'(\$[0-9A-F]+)', Number.Hex), |
144 (r'(\$[0-9A-F]+)', Number.Hex), |
152 (r'(\#|%|&|\-|\+)?[0-9]+', Number.Integer), |
145 (r'(\#|%|&|\-|\+)?[0-9]+', Number.Integer), |
153 (r'(\#|%|&|\-|\+)?[0-9.]+', Keyword.Type), |
146 (r'(\#|%|&|\-|\+)?[0-9.]+', Keyword.Type), |
154 # amforth specific |
147 # amforth specific |
155 (r'(@i|!i|@e|!e|pause|noop|turnkey|sleep|' |
148 (r'(@i|!i|@e|!e|pause|noop|turnkey|sleep|' |
156 r'itype|icompare|sp@|sp!|rp@|rp!|up@|up!|' |
149 r'itype|icompare|sp@|sp!|rp@|rp!|up@|up!|' |
157 r'>a|a>|a@|a!|a@+|a@-|>b|b>|b@|b!|b@+|b@-|' |
150 r'>a|a>|a@|a!|a@+|a@-|>b|b>|b@|b!|b@+|b@-|' |
158 r'find-name|1ms|' |
151 r'find-name|1ms|' |
159 r'sp0|rp0|\(evaluate\)|int-trap|int!)' + delimiter, |
152 r'sp0|rp0|\(evaluate\)|int-trap|int!)(?!\S)', |
160 Name.Constant), |
153 Name.Constant), |
161 # a proposal |
154 # a proposal |
162 (r'(do-recognizer|r:fail|recognizer:|get-recognizers|' |
155 (r'(do-recognizer|r:fail|recognizer:|get-recognizers|' |
163 r'set-recognizers|r:float|r>comp|r>int|r>post|' |
156 r'set-recognizers|r:float|r>comp|r>int|r>post|' |
164 r'r:name|r:word|r:dnum|r:num|recognizer|forth-recognizer|' |
157 r'r:name|r:word|r:dnum|r:num|recognizer|forth-recognizer|' |
165 r'rec:num|rec:float|rec:word)' + delimiter, Name.Decorator), |
158 r'rec:num|rec:float|rec:word)(?!\S)', Name.Decorator), |
166 # defining words. The next word is a new command name |
159 # defining words. The next word is a new command name |
167 (r'(Evalue|Rvalue|Uvalue|Edefer|Rdefer|Udefer)(\s+)', |
160 (r'(Evalue|Rvalue|Uvalue|Edefer|Rdefer|Udefer)(\s+)', |
168 bygroups(Keyword.Namespace, Text), 'worddef'), |
161 bygroups(Keyword.Namespace, Text), 'worddef'), |
169 |
162 |
170 (valid_name, Name.Function), # Anything else is executed |
163 (r'\S+', Name.Function), # Anything else is executed |
171 |
164 |
172 ], |
165 ], |
173 'worddef': [ |
166 'worddef': [ |
174 (r'\S+', Name.Class, '#pop'), |
167 (r'\S+', Name.Class, '#pop'), |
175 ], |
168 ], |