Fix infinite loop with unterminated (

slava 2006-02-21 23:33:16 +00:00
parent 4ae3b85dbf
commit 0bb9e1df30
2 changed files with 8 additions and 9 deletions

View File

@ -7,9 +7,14 @@ USING: alien arrays errors generic hashtables kernel lists math
namespaces parser sequences strings syntax vectors namespaces parser sequences strings syntax vectors
words ; words ;
: ( CHAR: ) ch-search until ; parsing : (
: ! until-eol ; parsing CHAR: ) column [
: #! until-eol ; parsing line-text get index* dup -1 =
[ "Unterminated (" throw ] when 1+
] change ; parsing
: ! line-text get length column set ; parsing
: #! POSTPONE: ! ; parsing
: IN: scan set-in ; parsing : IN: scan set-in ; parsing
: USE: scan use+ ; parsing : USE: scan use+ ; parsing
: USING: string-mode on [ string-mode off add-use ] f ; parsing : USING: string-mode on [ string-mode off add-use ] f ; parsing

View File

@ -84,12 +84,6 @@ SYMBOL: string-mode
: (parse) ( str -- ) line-text set 0 column set parse-loop ; : (parse) ( str -- ) line-text set 0 column set parse-loop ;
! Parsing word utilities ! Parsing word utilities
: ch-search ( ch -- index ) column get line-text get index* ;
: until ( index -- ) 1+ column set ;
: until-eol ( -- ) line-text get length until ;
: escape ( ch -- esc ) : escape ( ch -- esc )
H{ H{
{ CHAR: e CHAR: \e } { CHAR: e CHAR: \e }