diff options
Diffstat (limited to 'ipl/procs/scanmodl.icn')
-rw-r--r-- | ipl/procs/scanmodl.icn | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/ipl/procs/scanmodl.icn b/ipl/procs/scanmodl.icn new file mode 100644 index 0000000..540139e --- /dev/null +++ b/ipl/procs/scanmodl.icn @@ -0,0 +1,49 @@ +############################################################################ +# +# File: scanmodl.icn +# +# Subject: Procedures to model string scanning +# +# Author: Ralph E. Griswold +# +# Date: May 30, 1993 +# +############################################################################ +# +# This file is in the public domain. +# +############################################################################ +# +# These procedures model string scanning: +# +# e1 ? e2 -> Escan(Bscan(e1, e2) +# +# See Icon Analyst 6, pp. 1-2. +# +############################################################################ + +record ScanEnvir(subject, pos) + +procedure Bscan(e1) + local OuterEnvir + OuterEnvir := ScanEnvir(&subject, &pos) + &subject := e1 + &pos := 1 + suspend OuterEnvir + &subject := OuterEnvir.subject + &pos := OuterEnvir.pos + fail +end + +procedure Escan(OuterEnvir, e2) + local InnerEnvir + InnerEnvir := ScanEnvir(&subject, &pos) + &subject := OuterEnvir.subject + &pos := OuterEnvir.pos + suspend e2 + OuterEnvir.subject := &subject + OuterEnvir.pos := &pos + &subject := InnerEnvir.subject + &pos := InnerEnvir.pos + fail +end |