--- gforth/prims2x.fs 1999/03/09 17:19:40 1.40 +++ gforth/prims2x.fs 1999/05/10 12:50:49 1.42 @@ -62,11 +62,6 @@ maxchar 1+ constant eof-char #tab constant tab-char #lf constant nl-char -: read-whole-file ( c-addr1 file-id -- c-addr2 ) -\ reads the contents of the file file-id puts it into memory at c-addr1 -\ c-addr2 is the first address after the file block - >r dup $7fffffff r> read-file throw + ; - variable rawinput \ pointer to next character to be scanned variable endrawinput \ pointer to the end of the input (the char after the last) variable cookedinput \ pointer to the next char to be parsed @@ -256,7 +251,20 @@ eof-char singleton charclass eof nowhite ++ <- name ( -- ) -(( {{ ?flush-comment start }} ` \ nonl ** nl {{ end +Variable forth-flag +Variable c-flag + +(( (( ` f || ` F )) {{ start }} nonl ** + {{ end forth-flag @ IF type cr ELSE 2drop THEN }} +)) <- forth-comment ( -- ) + +(( (( ` c || ` C )) {{ start }} nonl ** + {{ end c-flag @ IF type cr ELSE 2drop THEN }} +)) <- c-comment ( -- ) + +(( (( forth-comment || c-comment )) ?? nonl ** )) <- comment-body + +(( {{ ?flush-comment start }} ` \ comment-body nl {{ end 2dup 2 min s" \+" compare 0= IF f-comment 2! ELSE 2drop THEN }} )) <- comment ( -- ) @@ -291,9 +299,9 @@ warnings @ [IF] \ fileid is for the input file, xt ( -- ) is for the output word output ! here dup rawinput ! cookedinput ! - here swap read-whole-file - dup endrawinput ! - here - allot + here unused rot read-file throw + dup here + endrawinput ! + allot align checksyncline \ begin