aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/examples/string-rec.frt
blob: b1bd9304999bbf15c9519ed1e1925348c53f8e3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

\ use " as string delimiters. Everything
\ between two " is a string. It replaces
\ the forth command s" completly
\ instead of s" foo" use "foo". The space
\ after s" is no longer needed, instead it
\ a part of the string. s" foo" and " foo"
\ differ with the leading space in the latter

\ strings live as long as the SOURCE is
\ unchanged! Compilation is done to the
\ flash if called in compile state.
\ postponing a compiled string is not yet
\ supported.

\ #require recognizer.frt

' noop 
:noname postpone sliteral ;
:noname -48 throw ; recognizer: r:string

: rec:string ( addr len -- addr' len' r:string | r:fail )
  over c@ [char] " <> if 2drop r:fail exit then
  negate 1+ >in +! drop \ reset parse area to SOURCE
  [char] " parse  \ get trailing delimiter
  -1 /string
  r:string
;