File:  [CSRG BSD Unix] / 43BSD / contrib / icon / man / man2 / patterns.2
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:55 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD43
BSD 4.3

.so tmac.ilib
.TH PATTERNS 2 "The University of Arizona \- 7/29/84"
.SH NAME
patterns \- SNOBOL4-style pattern matching
.SH DESCRIPTION
These procedures are adapted from TR 80-25 and TR 81-6. They
provide procedural equivalents for most SNOBOL4 patterns and
some extensions.
.SH SYNOPSIS
.nf
.sp 1
.ta 1.5i
\*MAnchor()	&ANCHOR = 1 \fR if \*MMode := Anchor
Any(s)	ANY(S)
Apply(s,\*bp)	S ? P
Arb()	ARB
Arbno(p)	ARBNO(P)
Arbx(i)	ARB(I)
Bal()	BAL
Break(s)	BREAK(S)
Breakx(s)	BREAKX(S)
Cat(p1,\*bp2)	P1 P2
Discard(p)	/P
Exog(s)	\eS
Find(s)	FIND(S)
Float()	&ANCHOR = 0 \fR if \*MMode := Float
Len(i)	LEN(I)
Limit(p,\*bi)	P \e i
Locate(p)	LOCATE(P)
Marb()	\fRlongest-first\*M ARB
Mode()	\fRAnchored or unanchored matching (see \*MAnchor\fR and \*MFloat\fR)\*M
Notany(s)	NOTANY(S)
Pos(i)	POS(I)
Replace(p,\*bs)	P \(== S
Rpos(i)	RPOS(I)
Rtab(i)	RTAB(I)
Span(s)	SPAN(S)
String(s)	S
Succeed()	SUCCEED
Tab(i)	TAB(I)
Xform(f,\*bp)	F(P)
.ft R
.fi
.LP
In addition to the procedures above, the following expressions can be
used:
.nf
.sp 1
\*Mp1() | p2()	P1 | P2
v <\- p()	P . V \fR(approximate)\*M
v := p()	P $ V \fR(approximate)\*M
fail	FAIL
=s		S\fR (in place of \*MString(s)\fR)\*M
p1() || p2()	P1 P2 \fR(in place of \*MCat(p1,\*bp2)\fR)\*M
.ft R
.sp 1
.fi
.LP
Using this system, most SNOBOL4 patterns can be satisfactorily transliterated
into Icon procedures and expressions. For example, the pattern
.DS
SPAN("0123456789") $ N "H" LEN(*N) $ LITERAL
.DE
can be transliterated into
.DS
(n <\- Span('0123456789')) || ="H" || (literal <\- Len(n))
.DE
Concatenation of components is necessary to preserve the pattern-matching properties
of SNOBOL4.
See the documents listed below for details and limitations.
.SH CAVEATS
Simulating SNOBOL4 pattern matching using the procedures above
is inefficient.
.SH SEE ALSO
Ralph E. Griswold. \fIPattern Matching in Icon\fR,
TR 80-25, The University of Arizona, 1980.
.LP
Ralph E. Griswold. \fIModels of String Pattern Matching\fR,
TR 81-6,
Department of Computer Science, The University of Arizona, 1981.
.LP
Ralph E. Griswold. ``Implementing SNOBOL4 Pattern Matching in Icon'',
\fIComputer Languages\fR, Vol. 8, No. 8 (1983), pp. 77-92.
.SH AUTHOR
Ralph E. Griswold

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.