Changeset 77 for trunk/orca
- Timestamp:
- 03/08/06 14:59:29 (3 years ago)
- Location:
- trunk/orca
- Files:
-
- 1 added
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/orca/boot.c
r71 r77 2 2 3 3 static char _natives[] = 4 "sizeof: native [] \n"5 "comment: native [value] \n"4 "sizeof: native [] \n" 5 "comment: native [value] \n" 6 6 "set: native [\n" 7 " word \n"8 " value\n" 9 "] \n"7 " word \n" 8 " value\n" 9 "] \n" 10 10 "unset: native [\n" 11 11 " word [word! block!]\n" 12 "] \n"13 "value?: native [val] \n"14 "any-word?: native [val] \n"12 "] \n" 13 "value?: native [val] \n" 14 "any-word?: native [val] \n" 15 15 "get: native [\n" 16 16 " word\n" 17 "] \n"17 "] \n" 18 18 "do: native [\n" 19 " \"Evaluates a block or any other value.\" \n"20 " value \n"19 " \"Evaluates a block or any other value.\" \n" 20 " value \n" 21 21 " /args arg\n" 22 "] \n"22 "] \n" 23 23 "make: native [\n" 24 " \"Construct new value\" \n"25 " type \n"24 " \"Construct new value\" \n" 25 " type \n" 26 26 " spec\n" 27 "] \n"27 "] \n" 28 28 "bind: native [\n" 29 " words [block! word!] \n"30 " known-word [word! object!] \n"29 " words [block! word!] \n" 30 " known-word [word! object!] \n" 31 31 " /copy\n" 32 "] \n"32 "] \n" 33 33 "in: native [\n" 34 " object [object!] \n"34 " object [object!] \n" 35 35 " word [word!]\n" 36 "] \n"36 "] \n" 37 37 "use: native [\n" 38 " words [block! word!] \n"39 " body [block!]\n" 40 "] \n"38 " words [block! word!] \n" 39 " body [block!]\n" 40 "] \n" 41 41 "copy: native [\n" 42 " value [series! bitset! matrix!] \n"43 " /part \n"44 " range [integer! series!] \n"42 " value [series! bitset! matrix!] \n" 43 " /part \n" 44 " range [integer! series!] \n" 45 45 " /deep\n" 46 "] \n"46 "] \n" 47 47 "change: native [\n" 48 " series [series!] \n"49 " value \n"50 " /part \n"51 " range [integer! series!] \n"48 " series [series!] \n" 49 " value \n" 50 " /part \n" 51 " range [integer! series!] \n" 52 52 " /only\n" 53 "] \n"53 "] \n" 54 54 "find: native [\n" 55 " series [series!] \n"56 " value \n"57 " /match \n"55 " series [series!] \n" 56 " value \n" 57 " /match \n" 58 58 " /last\n" 59 "] \n"59 "] \n" 60 60 "reduce: native [\n" 61 61 " value\n" 62 "] \n"62 "] \n" 63 63 "compose: native [\n" 64 " value \n"64 " value \n" 65 65 " /deep\n" 66 "] \n"66 "] \n" 67 67 "form: native [\n" 68 68 " value\n" 69 "] \n"69 "] \n" 70 70 "mold: native [\n" 71 71 " value\n" 72 "] \n"73 "not: native [value] \n"74 "print: native [value] \n"75 "prin: native [value] \n"72 "] \n" 73 "not: native [value] \n" 74 "print: native [value] \n" 75 "prin: native [value] \n" 76 76 "clear: native [\n" 77 77 " series [series! none!]\n" 78 "] \n"78 "] \n" 79 79 "skip: native [\n" 80 " series [series!] \n"80 " series [series!] \n" 81 81 " offset [number! logic!]\n" 82 "] \n"82 "] \n" 83 83 "at: native [\n" 84 " series [series!] \n"84 " series [series!] \n" 85 85 " index [number! logic!]\n" 86 "] \n"86 "] \n" 87 87 "pick: native [\n" 88 " series [series! tuple! matrix!] \n"88 " series [series! tuple! matrix!] \n" 89 89 " index [number! logic!]\n" 90 "] \n"90 "] \n" 91 91 "poke: native [\n" 92 " value \n"93 " index [number! logic!] \n"92 " value \n" 93 " index [number! logic!] \n" 94 94 " data\n" 95 "] \n"95 "] \n" 96 96 "select: native [\n" 97 " series [series!] \n"98 " value\n" 99 "] \n"100 "first: native [value] \n"101 "second: native [value] \n"102 "third: native [value] \n"103 "last: native [value [series! tuple!]] \n"97 " series [series!] \n" 98 " value\n" 99 "] \n" 100 "first: native [value] \n" 101 "second: native [value] \n" 102 "third: native [value] \n" 103 "last: native [value [series! tuple!]] \n" 104 104 "reverse: native [\n" 105 " value [series! tuple! pair!] \n"106 " /part \n"105 " value [series! tuple! pair!] \n" 106 " /part \n" 107 107 " range [integer! series!]\n" 108 "] \n"108 "] \n" 109 109 "parse: native [\n" 110 " input [series!] \n"111 " rules [block! string! none!] \n"112 " /all \n"110 " input [series!] \n" 111 " rules [block! string! none!] \n" 112 " /all \n" 113 113 " /case\n" 114 "] \n"115 "type?: native [value /word] \n"116 "length?: native [value [series! tuple!]] \n"117 "any-string?: native [value] \n"118 "any-block?: native [value] \n"119 "binary?: \n"120 "bitset?: \n"121 "block?: \n"122 "char?: \n"123 "datatype?: \n"124 "decimal?: \n"125 "error?: \n"126 "file?: \n"127 "function?: \n"128 "getword?: \n"129 "hash?: \n"130 "integer?: \n"131 "issue?: \n"132 "list?: \n"133 "litpath?: \n"134 "litword?: \n"135 "logic?: \n"136 "native?: \n"137 "none?: \n"138 "number?: \n"139 "object?: \n"140 "op?: \n"141 "pair?: \n"142 "paren?: \n"143 "path?: \n"144 "refinement?: \n"145 "series?: \n"146 "setpath?: \n"147 "setword?: \n"148 "string?: \n"149 "tag?: \n"150 "time?: \n"151 "tuple?: \n"152 "unset?: \n"153 "word?: native [value] \n"114 "] \n" 115 "type?: native [value /word] \n" 116 "length?: native [value [series! tuple!]] \n" 117 "any-string?: native [value] \n" 118 "any-block?: native [value] \n" 119 "binary?: \n" 120 "bitset?: \n" 121 "block?: \n" 122 "char?: \n" 123 "datatype?: \n" 124 "decimal?: \n" 125 "error?: \n" 126 "file?: \n" 127 "function?: \n" 128 "getword?: \n" 129 "hash?: \n" 130 "integer?: \n" 131 "issue?: \n" 132 "list?: \n" 133 "litpath?: \n" 134 "litword?: \n" 135 "logic?: \n" 136 "native?: \n" 137 "none?: \n" 138 "number?: \n" 139 "object?: \n" 140 "op?: \n" 141 "pair?: \n" 142 "paren?: \n" 143 "path?: \n" 144 "refinement?: \n" 145 "series?: \n" 146 "setpath?: \n" 147 "setword?: \n" 148 "string?: \n" 149 "tag?: \n" 150 "time?: \n" 151 "tuple?: \n" 152 "unset?: \n" 153 "word?: native [value] \n" 154 154 "to: native [\n" 155 " type \n"156 " value\n" 157 "] \n"158 "disarm: native [error [error!]] \n"159 "try: native [block [block!]] \n"155 " type \n" 156 " value\n" 157 "] \n" 158 "disarm: native [error [error!]] \n" 159 "try: native [block [block!]] \n" 160 160 "catch: native [\n" 161 " block [block!] \n"161 " block [block!] \n" 162 162 " /name word [word!]\n" 163 "] \n"164 "throw: native [value /name word [word!]] \n"165 "does: native [value] \n"163 "] \n" 164 "throw: native [value /name word [word!]] \n" 165 "does: native [value] \n" 166 166 "func: native [\n" 167 " spec [block!] \n"168 " body [block!]\n" 169 "] \n"167 " spec [block!] \n" 168 " body [block!]\n" 169 "] \n" 170 170 "if: native [\n" 171 " condition \n"171 " condition \n" 172 172 " then-block [block!]\n" 173 "] \n"173 "] \n" 174 174 "unless: native [\n" 175 " condition \n"175 " condition \n" 176 176 " then-block [block!]\n" 177 "] \n"177 "] \n" 178 178 "either: native [\n" 179 " condition \n"180 " then-block [block!] \n"179 " condition \n" 180 " then-block [block!] \n" 181 181 " else-block [block!]\n" 182 "] \n"182 "] \n" 183 183 "any: native [\n" 184 184 " block [block!]\n" 185 "] \n"185 "] \n" 186 186 "all: native [\n" 187 187 " block [block!]\n" 188 "] \n"188 "] \n" 189 189 "loop: native [\n" 190 " count [integer!] \n"190 " count [integer!] \n" 191 191 " block [block!]\n" 192 "] \n"192 "] \n" 193 193 "repeat: native [\n" 194 " 'word [word!] \n"195 " value [integer! series!] \n"194 " 'word [word!] \n" 195 " value [integer! series!] \n" 196 196 " block [block!]\n" 197 "] \n"197 "] \n" 198 198 "foreach: native [\n" 199 " 'word [word! block!]\n" 200 " data [series!]\n" 201 " body [block!]\n" 202 "]\n" 199 " 'word [word! block!] \n" 200 " data [series!] \n" 201 " body [block!]\n" 202 "] \n" 203 "remove-each: native [\n" 204 " 'word [word! block!] \n" 205 " data [series!] \n" 206 " body [block!]\n" 207 "] \n" 203 208 "while: native [\n" 204 " cond [block!] \n"205 " body [block!]\n" 206 "] \n"209 " cond [block!] \n" 210 " body [block!]\n" 211 "] \n" 207 212 "until: native [\n" 208 213 " cond [block!]\n" 209 "] \n"214 "] \n" 210 215 "break: native [\n" 211 " /return \n"212 " value\n" 213 "] \n"216 " /return \n" 217 " value\n" 218 "] \n" 214 219 "return: native [\n" 215 220 " value\n" 216 "] \n"217 "exit: native [] \n"221 "] \n" 222 "exit: native [] \n" 218 223 "back: native [\n" 219 224 " series [series!]\n" 220 "] \n"225 "] \n" 221 226 "next: native [\n" 222 227 " series [series!]\n" 223 "] \n"228 "] \n" 224 229 "head: native [\n" 225 230 " series [series!]\n" 226 "] \n"231 "] \n" 227 232 "tail: native [\n" 228 233 " series [series!]\n" 229 "] \n"234 "] \n" 230 235 "index?: native [\n" 231 236 " series [series!]\n" 232 "] \n"237 "] \n" 233 238 "head?: native [\n" 234 239 " series [series!]\n" 235 "] \n"240 "] \n" 236 241 "tail?: native [\n" 237 242 " series [series!]\n" 238 "] \n"243 "] \n" 239 244 "insert: native [\n" 240 " series [series!] \n"241 " value \n"242 " /part \n"243 " range [integer! series!] \n"245 " series [series!] \n" 246 " value \n" 247 " /part \n" 248 " range [integer! series!] \n" 244 249 " /only\n" 245 "] \n"250 "] \n" 246 251 "remove: native [\n" 247 " series [series! none!] \n"248 " /part \n"252 " series [series! none!] \n" 253 " /part \n" 249 254 " range [integer! series! pair!]\n" 250 "] \n"255 "] \n" 251 256 "lowercase: native [\n" 252 " string [string! file!] \n"257 " string [string! file!] \n" 253 258 " /part range [integer!]\n" 254 "] \n"259 "] \n" 255 260 "uppercase: native [\n" 256 " string [string! file!] \n"261 " string [string! file!] \n" 257 262 " /part range [integer!]\n" 258 "] \n"263 "] \n" 259 264 "load: native [\n" 260 265 " source [file! string!]\n" 261 "] \n"262 "open: native [what] \n"263 "close: native [port [port!]] \n"266 "] \n" 267 "open: native [what] \n" 268 "close: native [port [port!]] \n" 264 269 "read: native [\n" 265 " source [file! port!] \n"266 " /binary \n"267 " /lines \n"268 " /skip length [number!] \n"270 " source [file! port!] \n" 271 " /binary \n" 272 " /lines \n" 273 " /skip length [number!] \n" 269 274 " /part size [number!]\n" 270 "] \n"275 "] \n" 271 276 "write: native [\n" 272 " dest [file! port! object! block!] \n"273 " value \n"274 " /binary \n"277 " dest [file! port! object! block!] \n" 278 " value \n" 279 " /binary \n" 275 280 " /append\n" 276 "] \n"281 "] \n" 277 282 "rename: native [\n" 278 " old [file!] \n"283 " old [file!] \n" 279 284 " new [file! string!]\n" 280 "] \n"285 "] \n" 281 286 "delete: native [\n" 282 287 " what [file!]\n" 283 "] \n"288 "] \n" 284 289 "exists?: native [\n" 285 290 " target [file!]\n" 286 "] \n"291 "] \n" 287 292 "size?: native [\n" 288 293 " target [file!]\n" 289 "] \n"294 "] \n" 290 295 "dir?: native [\n" 291 296 " target [file!]\n" 292 "] \n"297 "] \n" 293 298 "modified?: native [\n" 294 299 " target [file!]\n" 295 "] \n"296 "getenv: native [name [string!]] \n"300 "] \n" 301 "getenv: native [name [string!]] \n" 297 302 "call: native [\n" 298 " command [string! block!] \n"299 " /output \n"300 " out [string! file! none!] \n"303 " command [string! block!] \n" 304 " /output \n" 305 " out [string! file! none!] \n" 301 306 " /wait\n" 302 "] \n"303 "change-dir: native [value] \n"304 "what-dir: native [] \n"305 "make-dir: native [path [file!]] \n"306 "clean-path: native [path [file!]] \n"307 "recycle: native [/off /on] \n"308 "halt: native [] \n"309 "quit: native [] \n"307 "] \n" 308 "change-dir: native [value] \n" 309 "what-dir: native [] \n" 310 "make-dir: native [path [file!]] \n" 311 "clean-path: native [path [file!]] \n" 312 "recycle: native [/off /on] \n" 313 "halt: native [] \n" 314 "quit: native [] \n" 310 315 "protect: native [\n" 311 316 " value [word! block!]\n" 312 "] \n"317 "] \n" 313 318 "now: native [\n" 314 319 " /time\n" 315 "] \n"320 "] \n" 316 321 "trim: native [\n" 317 " string [string! series!] \n"318 " /auto \n"319 " /head \n"322 " string [string! series!] \n" 323 " /auto \n" 324 " /head \n" 320 325 " /tail\n" 321 "] \n"322 "dump: native [val] \n"323 "same?: native [v1 v2] \n"324 "equal?: native [v1 v2] \n"325 "strict-equal?: native [v1 v2] \n"326 "greater-or-equal?: native [v1 v2] \n"327 "greater?: native [v1 v2] \n"328 "lesser-or-equal?: native [v1 v2] \n"329 "lesser?: native [v1 v2] \n"330 "odd?: native [number [number! char!]] \n"331 "even?: native [number [number! char!]] \n"332 "abs: native [number [number! pair!]] \n"333 "complement: native [value [logic! integer! bitset!]] \n"334 "negate: native [number [number! pair! bitset! vec3!]] \n"335 "sine: native [value [number!] /radians] \n"336 "cosine: native [value [number!] /radians] \n"337 "arcsine: native [value [number!] /radians] \n"338 "arccosine: native [value [number!] /radians] \n"339 "tangent: native [value [number!] /radians] \n"340 "arctangent: native [value [number!] /radians] \n"341 "square-root: native [value [number!]] \n"342 "random: native [value /seed /only] \n"343 "power: native [x [number!] y [number!]] \n"326 "] \n" 327 "dump: native [val] \n" 328 "same?: native [v1 v2] \n" 329 "equal?: native [v1 v2] \n" 330 "strict-equal?: native [v1 v2] \n" 331 "greater-or-equal?: native [v1 v2] \n" 332 "greater?: native [v1 v2] \n" 333 "lesser-or-equal?: native [v1 v2] \n" 334 "lesser?: native [v1 v2] \n" 335 "odd?: native [number [number! char!]] \n" 336 "even?: native [number [number! char!]] \n" 337 "abs: native [number [number! pair!]] \n" 338 "complement: native [value [logic! integer! bitset!]] \n" 339 "negate: native [number [number! pair! bitset! vec3!]] \n" 340 "sine: native [value [number!] /radians] \n" 341 "cosine: native [value [number!] /radians] \n" 342 "arcsine: native [value [number!] /radians] \n" 343 "arccosine: native [value [number!] /radians] \n" 344 "tangent: native [value [number!] /radians] \n" 345 "arctangent: native [value [number!] /radians] \n" 346 "square-root: native [value [number!]] \n" 347 "random: native [value /seed /only] \n" 348 "power: native [x [number!] y [number!]] \n" 344 349 "remainder: native [\n" 345 " x [number!] \n"350 " x [number!] \n" 346 351 " y [number!]\n" 347 "] \n"348 "compress: native [data [string! binary!]] \n"349 "decompress: native [data [binary!]] \n"350 "dot: native [a [vec3!] b [vec3!]] \n"351 "cross: native [a [vec3!] b [vec3!]] \n"352 "] \n" 353 "compress: native [data [string! binary!]] \n" 354 "decompress: native [data [binary!]] \n" 355 "dot: native [a [vec3!] b [vec3!]] \n" 356 "cross: native [a [vec3!] b [vec3!]] \n" 352 357 "normalize: native [vec [vec3!]]\n" 353 358 ; 354 359 355 360 static char _boot[] = 356 "context: func [blk [block!]] [make object! blk] \n"357 "probe: func [value] [print mold :value :value] \n"361 "context: func [blk [block!]] [make object! blk] \n" 362 "probe: func [value] [print mold :value :value] \n" 358 363 "source: func ['word] [\n" 359 " prin rejoin [word \": \"] \n"364 " prin rejoin [word \": \"] \n" 360 365 " either function? get word [\n" 361 366 " print mold get word\n" 362 367 " ] [\n" 363 " either native? get word \n"364 " [print mold get word] \n"368 " either native? get word \n" 369 " [print mold get word] \n" 365 370 " [print \"is not a function\"]\n" 366 371 " ]\n" 367 "] \n"372 "] \n" 368 373 "function: func [\n" 369 " spec [block!] \n"370 " vars [block!] \n"374 " spec [block!] \n" 375 " vars [block!] \n" 371 376 " body [block!]\n" 372 377 "] [\n" 373 378 " func head insert insert tail copy spec /local vars body\n" 374 "] \n"375 "true: yes: on: make logic! 1 \n"376 "false: no: off: make logic! 0 \n"377 "newline: #\"^/\" \n"378 "empty?: :tail? \n"379 "q: :quit \n"380 "orca: true \n"379 "] \n" 380 "true: yes: on: make logic! 1 \n" 381 "false: no: off: make logic! 0 \n" 382 "newline: #\"^/\" \n" 383 "empty?: :tail? \n" 384 "q: :quit \n" 385 "orca: true \n" 381 386 "system: context [\n" 382 " version: 0.0.23 \n"383 " os: none \n"387 " version: 0.0.23 \n" 388 " os: none \n" 384 389 " error: context [\n" 385 390 " msg: type: id: near: none\n" 386 " ] \n"387 " error-types: ['syntax 'script 'math 'access 'internal] \n"388 " words: none \n"391 " ] \n" 392 " error-types: ['syntax 'script 'math 'access 'internal] \n" 393 " words: none \n" 389 394 " script-proto: context [\n" 390 " args: \n"391 " path: \n"392 " parent: \n"395 " args: \n" 396 " path: \n" 397 " parent: \n" 393 398 " header: none\n" 394 " ] \n"399 " ] \n" 395 400 " script: none\n" 396 "] \n"397 "protect 'system \n"398 "protect 'datatypes \n"399 "to-binary: func [value] [to binary! :value] \n"400 "to-bitset: func [value] [to bitset! :value] \n"401 "to-block: func [value] [to block! :value] \n"402 "to-char: func [value] [to char! :value] \n"403 "to-decimal: func [value] [to decimal! :value] \n"404 "to-file: func [value] [to file! :value] \n"405 "to-get-word: func [value] [to get-word! :value] \n"406 "to-integer: func [value] [to integer! :value] \n"407 "to-issue: func [value] [to issue! :value] \n"408 "to-lit-path: func [value] [to lit-path! :value] \n"409 "to-lit-word: func [value] [to lit-word! :value] \n"410 "to-logic: func [value] [to logic! :value] \n"411
