1 ! Copyright (C) 2007 Daniel Ehrenberg
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: namespaces parser lexer kernel sequences words quotations math ;
6 : next-line-text ( -- str )
7 lexer get dup next-line lexer-line-text ;
12 [ drop lexer get next-line ]
13 [ % "\n" % (parse-here) ] if
14 ] [ ";" unexpected-eof ] if* ;
16 : parse-here ( -- str )
17 [ (parse-here) ] "" make but-last
22 parse-here 1quotation define-inline ; parsing
24 : (parse-multiline-string) ( start-index end-text -- end-index )
25 lexer get lexer-line-text [
27 [ rot dupd >r >r swap subseq % r> r> length + ] [
29 lexer get next-line swap (parse-multiline-string)
31 ] [ nip unexpected-eof ] if* ;
33 : parse-multiline-string ( end-text -- str )
35 lexer get lexer-column swap (parse-multiline-string)
36 lexer get set-lexer-column
37 ] "" make rest but-last ;
40 "\">" parse-multiline-string parsed ; parsing
42 : /* "*/" parse-multiline-string drop ; parsing