Procházet zdrojové kódy

Remove ";" word

The ":" now takes care of scanning for ";". Conceptually, having
";" as an immediate word is slightly simpler than the approach in
this commit, but when bootstrapping is involved, this simpler
approach gets murkier.

Moreover, it got even murkier-er when trying to de-stabilize EXIT,
so here we are.
master
Virgil Dupras před 3 roky
rodič
revize
3aa681ceca
8 změnil soubory, kde provedl 12 přidání a 19 odebrání
  1. +2
    -1
      blk/265
  2. +1
    -1
      blk/380
  3. +2
    -2
      blk/397
  4. +4
    -0
      blk/398
  5. +2
    -4
      blk/399
  6. +0
    -9
      blk/400
  7. binární
      cvm/forth.bin
  8. +1
    -2
      doc/dict.txt

+ 2
- 1
blk/265 Zobrazit soubor

@@ -1,6 +1,7 @@
: X:
(xentry) 1 ( compiled ) C,
BEGIN WORD
BEGIN
WORD DUP LIT" ;" S= IF DROP 0x0b , EXIT THEN
XCURRENT @ SWAP ( xcur w ) _find ( a f )
IF ( a )
DUP IMMED? IF ABORT THEN


+ 1
- 1
blk/380 Zobrazit soubor

@@ -1 +1 @@
1 20 LOADR+ ( xcomp core high )
1 19 LOADR+ ( xcomp core high )

+ 2
- 2
blk/397 Zobrazit soubor

@@ -9,7 +9,7 @@
: _ ( : will get its name almost at the very end )
(entry) 1 ( compiled ) C,
BEGIN
WORD FIND
IF ( is word ) DUP IMMED? IF EXECUTE ELSE , THEN
WORD DUP LIT" ;" S= IF DROP 0x0b , EXIT THEN
FIND IF ( is word ) DUP IMMED? IF EXECUTE ELSE , THEN
ELSE ( maybe number ) (parse) LITN THEN
AGAIN ;

+ 4
- 0
blk/398 Zobrazit soubor

@@ -10,3 +10,7 @@
[COMPILE] THEN
H@ 1- ( push a. 1- for allot offset )
; IMMEDIATE
: LIT"
COMPILE (s) H@ 0 C, ,"
DUP H@ -^ 1- ( a len ) SWAP C!
; IMMEDIATE

+ 2
- 4
blk/399 Zobrazit soubor

@@ -1,7 +1,3 @@
: LIT"
COMPILE (s) H@ 0 C, ,"
DUP H@ -^ 1- ( a len ) SWAP C!
; IMMEDIATE
( We don't use ." and ABORT in core, they're not xcomp-ed )
: ." [COMPILE] LIT" COMPILE (print) ; IMMEDIATE
: ABORT" [COMPILE] ." COMPILE ABORT ; IMMEDIATE
@@ -13,3 +9,5 @@
: COMPILE ' LITN ['] , , ; IMMEDIATE
: [COMPILE] ' , ; IMMEDIATE
: ['] ' LITN ; IMMEDIATE
':' X' _ 4 - C! ( give : its name )
'(' X' _ 4 - C!

+ 0
- 9
blk/400 Zobrazit soubor

@@ -1,9 +0,0 @@
( ';' can't have its name right away because, when created, it
is not an IMMEDIATE yet and will not be treated properly by
xcomp. )
: _
0x0b ( EXIT ) , R> DROP ( exit : )
; IMMEDIATE
';' X' _ 4 - C! ( give ; its name )
':' X' _ 4 - C! ( give : its name )
'(' X' _ 4 - C!

binární
cvm/forth.bin Zobrazit soubor


+ 1
- 2
doc/dict.txt Zobrazit soubor

@@ -63,8 +63,7 @@ WORD( a -- a Get wordref's beginning addr.

# Defining words

: x ... -- Define a new word
; R:I -- Exit a colon definition
: x ... ; -- Define a new word
CREATE x -- Create cell named x. Doesn't allocate a PF.
[COMPILE] x -- *I* Compile word x and write it to HERE.
IMMEDIATE words are *not* executed.


Načítá se…
Zrušit
Uložit