Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!ucsd!ucbvax!SOPHIST.UCHICAGO.EDU!goer From: goer@SOPHIST.UCHICAGO.EDU (Richard Goerwitz) Newsgroups: comp.lang.icon Subject: user-defined control structures; limitation expressions Message-ID: <9007250412.AA03991@sophist.uchicago.edu> Date: 25 Jul 90 04:12:27 GMT Sender: daemon@ucbvax.BERKELEY.EDU Distribution: inet Organization: The Internet Lines: 41 Mixed in with a recent posting on another topic, I suggested that p{a,b,c...} might possibly be extended to p{a;b;c}, where ; is actually intended to represent a comma, semicolon, or new- line. This would permit the creation of user-defined control structures that *looked* like control structures. I.e. instead of p{a,b,c} you could just write p { a b c etc. } This just looks to me like a control structure. In the case of my list scanning routines, it would permit me to say - l_scan(l) { junk1 junk2 etc. } The procedure l_scan would set up l_POS and l_SUBJ (the list equiva- lents to &pos and &subject), and then return a control procedure (call it setup_scan). Setup_scan(lst[]) would then simply execute each of its args, noting whether they were a break or next or some other control structure that might necessitate ending the scanning operation. If encountered, l_POS and l_SUBJ could be restored cor- rectly, and the loop could be terminated, just as with regular string scans. I've got another idea I'd be interested in hearing ideas about. Why not let &null limiters work like no limiters at all? Just curious. Often I change the amount of backtracking on the fly, and I find it rather awkward to use backslashes and what not to try to find a way to get a \ expression to do no limitation at all. Is there some easy and elegant way I'm overlooking? -Richard L. Goerwitz goer%sophist@uchicago.bitnet goer@sophist.uchicago.edu rutgers!oddjob!gide!sophist!goer