fix .factor-rc error reporting

cvs
Slava Pestov 2005-05-05 20:03:24 +00:00
parent 8b1ef9eb88
commit 5ccc94464f
6 changed files with 25 additions and 21 deletions

View File

@ -6,6 +6,9 @@ data could fill up the buffer and cause a denial-of-service attack.
The alien interface now supports "float" and "double" types. The alien interface now supports "float" and "double" types.
Moved the 'skip' combinator from the 'parser' vocabulary to 'sequences',
since its generic now. Implemented 'index*' in terms of 'skip'.
Factor 0.74: Factor 0.74:
------------ ------------

View File

@ -8,16 +8,12 @@
- 2map slow with lists - 2map slow with lists
- nappend: instead of using push, enlarge the sequence with set-length - nappend: instead of using push, enlarge the sequence with set-length
then add set the elements with set-nth then add set the elements with set-nth
- ensure-capacity: don't be generic
- vector's ensure-capacity will crash if not given fixnums!
- generic each some? all? member? memq? all=? index? subseq? map - generic each some? all? member? memq? all=? index? subseq? map
- index and index* are very slow with lists - index and index* are very slow with lists
- unsafe-sbuf>string - unsafe-sbuf>string
- generic subseq - generic subseq
- GENERIC: map - GENERIC: map
- list impl same as now - list impl same as now
- generic parser::scan
- .factor-rc loading errors are not reported properly
- code walker & exceptions - code walker & exceptions
- string sub-primitives - string sub-primitives
- generational gc - generational gc

View File

@ -10,7 +10,6 @@ vectors ;
! defined tuples that respond to the sequence protocol. ! defined tuples that respond to the sequence protocol.
UNION: sequence array string sbuf vector ; UNION: sequence array string sbuf vector ;
M: object ensure-capacity 2drop ;
M: object thaw clone ; M: object thaw clone ;
M: object freeze drop ; M: object freeze drop ;
@ -93,14 +92,23 @@ M: sequence (tree-each) [ (tree-each) ] seq-each-with ;
: seq-2map ( seq1 seq2 quot -- seq | quot: elt1 elt2 -- elt3 ) : seq-2map ( seq1 seq2 quot -- seq | quot: elt1 elt2 -- elt3 )
swap [ swap 2nmap ] immutable ; inline swap [ swap 2nmap ] immutable ; inline
: skip ( i seq quot -- n | quot: elt -- ? )
#! Find the next element starting at i that satisfies the
#! quotation.
>r 2dup length < [
2dup nth r> dup >r call [
r> 2drop
] [
>r 1 + r> r> skip
] ifte
] [
r> drop nip length
] ifte ; inline
! Operations ! Operations
: index* ( obj i seq -- n ) : index* ( obj i seq -- n )
#! The index of the object in the sequence, starting from i. #! The index of the object in the sequence, starting from i.
2dup length >= [ [ dupd = ] skip nip ;
3drop -1
] [
3dup nth = [ drop nip ] [ >r 1 + r> index* ] ifte
] ifte ;
: index ( obj seq -- n ) : index ( obj seq -- n )
#! The index of the object in the sequence. #! The index of the object in the sequence.
@ -112,7 +120,6 @@ M: sequence (tree-each) [ (tree-each) ] seq-each-with ;
: nappend ( s1 s2 -- ) : nappend ( s1 s2 -- )
#! Destructively append s2 to s1. #! Destructively append s2 to s1.
! over length over ensure-capacity
[ over push ] seq-each drop ; [ over push ] seq-each drop ;
: append ( s1 s2 -- s1+s2 ) : append ( s1 s2 -- s1+s2 )

View File

@ -14,7 +14,6 @@ USING: generic kernel math strings vectors ;
GENERIC: empty? ( sequence -- ? ) GENERIC: empty? ( sequence -- ? )
GENERIC: length ( sequence -- n ) GENERIC: length ( sequence -- n )
GENERIC: set-length ( n sequence -- ) GENERIC: set-length ( n sequence -- )
GENERIC: ensure-capacity ( n sequence -- )
GENERIC: nth ( n sequence -- obj ) GENERIC: nth ( n sequence -- obj )
GENERIC: set-nth ( value n sequence -- obj ) GENERIC: set-nth ( value n sequence -- obj )
GENERIC: thaw ( seq -- mutable-seq ) GENERIC: thaw ( seq -- mutable-seq )

View File

@ -36,7 +36,7 @@ IN: kernel-internals
#! to exactly len. #! to exactly len.
[ vector-array grow-array ] keep set-vector-array ; [ vector-array grow-array ] keep set-vector-array ;
M: vector ensure-capacity ( n vec -- ) : ensure-capacity ( n vec -- )
#! If n is beyond the vector's length, increase the length, #! If n is beyond the vector's length, increase the length,
#! growing the array if necessary, with an optimistic #! growing the array if necessary, with an optimistic
#! doubling of its size. #! doubling of its size.

View File

@ -9,16 +9,15 @@ USING: kernel lists namespaces sequences streams strings ;
: (parse-stream) ( name stream -- quot ) : (parse-stream) ( name stream -- quot )
#! Uses the current namespace for temporary variables. #! Uses the current namespace for temporary variables.
[
>r file set f ( initial parse tree ) r> >r file set f ( initial parse tree ) r>
[ (parse) ] read-lines reverse [ (parse) ] read-lines reverse
file off file off
line-number off ; line-number off
] with-parser ;
: parse-stream ( name stream -- quot ) : parse-stream ( name stream -- quot )
[ [ file-vocabs [ (parse-stream) ] with-parser ] with-scope ;
file-vocabs
[ (parse-stream) ] with-parser
] with-scope ;
: parse-file ( file -- quot ) : parse-file ( file -- quot )
dup <file-reader> parse-stream ; dup <file-reader> parse-stream ;