Stack comments without -- are a parse-time error now
parent
68973b1a51
commit
6598d373d1
3
Makefile
3
Makefile
|
@ -128,6 +128,9 @@ macosx.dmg:
|
|||
hdiutil create -srcfolder "$(DISK_IMAGE_DIR)" -fs HFS+ \
|
||||
-volname "$(DISK_IMAGE_DIR)" "$(DISK_IMAGE)"
|
||||
|
||||
tags:
|
||||
ctags-exuberant vm/*.[chm]
|
||||
|
||||
f: $(OBJS)
|
||||
$(CC) $(LIBS) $(LIBPATH) $(CFLAGS) -o $@$(PLAF_SUFFIX) $(OBJS)
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ SYMBOL: file
|
|||
SYMBOL: line-number
|
||||
|
||||
SYMBOL: line-text
|
||||
SYMBOL: column
|
||||
SYMBOL: column-number
|
||||
|
||||
TUPLE: check-vocab name ;
|
||||
: check-vocab ( name -- vocab )
|
||||
|
@ -53,6 +53,6 @@ TUPLE: parse-error file line col text ;
|
|||
C: parse-error ( msg -- error )
|
||||
file get over set-parse-error-file
|
||||
line-number get over set-parse-error-line
|
||||
column get over set-parse-error-col
|
||||
column-number get over set-parse-error-col
|
||||
line-text get over set-parse-error-text
|
||||
[ set-delegate ] keep ;
|
||||
|
|
|
@ -11,7 +11,7 @@ USING: alien arrays definitions errors generic
|
|||
hashtables kernel math modules namespaces parser sequences
|
||||
strings vectors words ;
|
||||
|
||||
: !! line-text get length column set ; parsing
|
||||
: !! line-text get length column-number set ; parsing
|
||||
: !#! POSTPONE: ! ; parsing
|
||||
: !IN: scan set-in ; parsing
|
||||
: !USE: scan use+ ; parsing
|
||||
|
|
|
@ -9,7 +9,7 @@ namespaces prettyprint sequences strings vectors words ;
|
|||
[ drop r> length ] [ r> drop ] if ; inline
|
||||
|
||||
: skip-blank ( -- )
|
||||
column [ line-text get [ blank? not ] skip ] change ;
|
||||
column-number [ line-text get [ blank? not ] skip ] change ;
|
||||
|
||||
: skip-word ( m line -- n )
|
||||
2dup nth CHAR: " = [ drop 1+ ] [ [ blank? ] skip ] if ;
|
||||
|
@ -19,7 +19,7 @@ namespaces prettyprint sequences strings vectors words ;
|
|||
|
||||
: scan ( -- token )
|
||||
skip-blank
|
||||
column [ line-text get (scan) dup ] change
|
||||
column-number [ line-text get (scan) dup ] change
|
||||
2dup = [ 2drop f ] [ line-text get subseq ] if ;
|
||||
|
||||
: CREATE ( -- word ) scan create-in ;
|
||||
|
@ -55,7 +55,10 @@ TUPLE: no-word name ;
|
|||
dup parsing? [ execute ] [ parsed ] if parse-loop
|
||||
] when* ;
|
||||
|
||||
: (parse) ( str -- ) line-text set 0 column set parse-loop ;
|
||||
: (parse) ( str -- )
|
||||
line-text set
|
||||
0 column-number set
|
||||
parse-loop ;
|
||||
|
||||
TUPLE: bad-escape ;
|
||||
: bad-escape ( -- * ) <bad-escape> throw ;
|
||||
|
@ -88,7 +91,7 @@ TUPLE: bad-escape ;
|
|||
[ drop 1+ ] [ [ next-char , ] keep (parse-string) ] if ;
|
||||
|
||||
: parse-string ( -- str )
|
||||
column
|
||||
column-number
|
||||
[ [ line-text get (parse-string) ] "" make swap ] change ;
|
||||
|
||||
: (parse-effect) ( -- )
|
||||
|
@ -98,9 +101,17 @@ TUPLE: bad-escape ;
|
|||
"Unexpected EOL" throw
|
||||
] if* ;
|
||||
|
||||
: string>effect ( seq -- effect )
|
||||
{ "--" } split1 dup [
|
||||
<effect>
|
||||
] [
|
||||
"Stack effect declaration must contain --" throw
|
||||
] if ;
|
||||
|
||||
: parse-effect ( -- effect )
|
||||
[ (parse-effect) column get ] { } make swap column set
|
||||
{ "--" } split1 <effect> ;
|
||||
[ (parse-effect) column-number get ] { } make
|
||||
swap column-number set
|
||||
string>effect ;
|
||||
|
||||
: parse-base ( parsed base -- parsed ) scan swap base> parsed ;
|
||||
|
||||
|
|
|
@ -81,3 +81,5 @@ unit-test
|
|||
|
||||
! Funny bug
|
||||
[ 2 ] [ "IN: temporary : \0. 2 ; \0." eval ] unit-test
|
||||
|
||||
[ "IN: temporary : missing-- ( a b ) ;" eval ] unit-test-fails
|
||||
|
|
Loading…
Reference in New Issue