Annotation of 43BSD/contrib/icon/man/cat2/patterns.2, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: 
                      4: PATTERNS(2)           Icon Program Library            PATTERNS(2)
                      5: 
                      6: 
                      7: 
                      8: NNNNAAAAMMMMEEEE
                      9:      patterns - SNOBOL4-style pattern matching
                     10: 
                     11: DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
                     12:      These procedures are adapted from TR 80-25 and TR 81-6. They
                     13:      provide procedural equivalents for most SNOBOL4 patterns and
                     14:      some extensions.
                     15: 
                     16: SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
                     17:      AAAAnnnncccchhhhoooorrrr(((())))       &&&&AAAANNNNCCCCHHHHOOOORRRR ==== 1111  if MMMMooooddddeeee ::::==== AAAAnnnncccchhhhoooorrrr
                     18:      AAAAnnnnyyyy((((ssss))))         AAAANNNNYYYY((((SSSS))))
                     19:      AAAAppppppppllllyyyy((((ssss,,,,pppp))))     SSSS ???? PPPP
                     20:      AAAArrrrbbbb(((())))          AAAARRRRBBBB
                     21:      AAAArrrrbbbbnnnnoooo((((pppp))))       AAAARRRRBBBBNNNNOOOO((((PPPP))))
                     22:      AAAArrrrbbbbxxxx((((iiii))))        AAAARRRRBBBB((((IIII))))
                     23:      BBBBaaaallll(((())))          BBBBAAAALLLL
                     24:      BBBBrrrreeeeaaaakkkk((((ssss))))       BBBBRRRREEEEAAAAKKKK((((SSSS))))
                     25:      BBBBrrrreeeeaaaakkkkxxxx((((ssss))))      BBBBRRRREEEEAAAAKKKKXXXX((((SSSS))))
                     26:      CCCCaaaatttt((((pppp1111,,,,pppp2222))))     PPPP1111 PPPP2222
                     27:      DDDDiiiissssccccaaaarrrrdddd((((pppp))))     ////PPPP
                     28:      EEEExxxxoooogggg((((ssss))))        \\\\SSSS
                     29:      FFFFiiiinnnndddd((((ssss))))        FFFFIIIINNNNDDDD((((SSSS))))
                     30:      FFFFllllooooaaaatttt(((())))        &&&&AAAANNNNCCCCHHHHOOOORRRR ==== 0000  if MMMMooooddddeeee ::::==== FFFFllllooooaaaatttt
                     31:      LLLLeeeennnn((((iiii))))         LLLLEEEENNNN((((IIII))))
                     32:      LLLLiiiimmmmiiiitttt((((pppp,,,,iiii))))     PPPP \\\\ iiii
                     33:      LLLLooooccccaaaatttteeee((((pppp))))      LLLLOOOOCCCCAAAATTTTEEEE((((PPPP))))
                     34:      MMMMaaaarrrrbbbb(((())))         longest-first AAAARRRRBBBB
                     35:      MMMMooooddddeeee(((())))         Anchored or unanchored matching (see AAAAnnnncccchhhhoooorrrr and FFFFllllooooaaaatttt)
                     36:      NNNNoooottttaaaannnnyyyy((((ssss))))      NNNNOOOOTTTTAAAANNNNYYYY((((SSSS))))
                     37:      PPPPoooossss((((iiii))))         PPPPOOOOSSSS((((IIII))))
                     38:      RRRReeeeppppllllaaaacccceeee((((pppp,,,,ssss))))   PPPP =_=_=_=_ SSSS
                     39:      RRRRppppoooossss((((iiii))))        RRRRPPPPOOOOSSSS((((IIII))))
                     40:      RRRRttttaaaabbbb((((iiii))))        RRRRTTTTAAAABBBB((((IIII))))
                     41:      SSSSppppaaaannnn((((ssss))))        SSSSPPPPAAAANNNN((((SSSS))))
                     42:      SSSSttttrrrriiiinnnngggg((((ssss))))      SSSS
                     43:      SSSSuuuucccccccceeeeeeeedddd(((())))      SSSSUUUUCCCCCCCCEEEEEEEEDDDD
                     44:      TTTTaaaabbbb((((iiii))))         TTTTAAAABBBB((((IIII))))
                     45:      XXXXffffoooorrrrmmmm((((ffff,,,,pppp))))     FFFF((((PPPP))))
                     46: 
                     47:      In addition to the procedures above, the following expres-
                     48:      sions can be used:
                     49: 
                     50:      pppp1111(((()))) |||| pppp2222(((())))    PPPP1111 |||| PPPP2222
                     51:      vvvv <<<<---- pppp(((())))       PPPP .... VVVV (approximate)
                     52:      vvvv ::::==== pppp(((())))       PPPP $$$$ VVVV (approximate)
                     53:      ffffaaaaiiiillll           FFFFAAAAIIIILLLL
                     54:      ====ssss             SSSS (in place of SSSSttttrrrriiiinnnngggg((((ssss)))))
                     55:      pppp1111(((()))) |||||||| pppp2222(((())))   PPPP1111 PPPP2222 (in place of CCCCaaaatttt((((pppp1111,,,,pppp2222)))))
                     56: 
                     57: 
                     58:      Using this system, most SNOBOL4 patterns can be satisfac-
                     59:      torily transliterated into Icon procedures and expressions.
                     60: 
                     61: 
                     62: 
                     63: Version 5.9    The University of Arizona - 7/29/84              1
                     64: 
                     65: 
                     66: 
                     67: 
                     68: 
                     69: 
                     70: PATTERNS(2)           Icon Program Library            PATTERNS(2)
                     71: 
                     72: 
                     73: 
                     74:      For example, the pattern
                     75: 
                     76:           SPAN("0123456789") $ N "H" LEN(*N) $ LITERAL
                     77: 
                     78:      can be transliterated into
                     79: 
                     80:           (n <- Span('0123456789')) || ="H" || (literal <- Len(n))
                     81: 
                     82:      Concatenation of components is necessary to preserve the
                     83:      pattern-matching properties of SNOBOL4.  See the documents
                     84:      listed below for details and limitations.
                     85: 
                     86: CCCCAAAAVVVVEEEEAAAATTTTSSSS
                     87:      Simulating SNOBOL4 pattern matching using the procedures
                     88:      above is inefficient.
                     89: 
                     90: SSSSEEEEEEEE AAAALLLLSSSSOOOO
                     91:      Ralph E. Griswold. _P_a_t_t_e_r_n _M_a_t_c_h_i_n_g _i_n _I_c_o_n, TR 80-25, The
                     92:      University of Arizona, 1980.
                     93: 
                     94:      Ralph E. Griswold. _M_o_d_e_l_s _o_f _S_t_r_i_n_g _P_a_t_t_e_r_n _M_a_t_c_h_i_n_g, TR
                     95:      81-6, Department of Computer Science, The University of
                     96:      Arizona, 1981.
                     97: 
                     98:      Ralph E. Griswold. ``Implementing SNOBOL4 Pattern Matching
                     99:      in Icon'', _C_o_m_p_u_t_e_r _L_a_n_g_u_a_g_e_s, Vol. 8, No. 8 (1983), pp.
                    100:      77-92.
                    101: 
                    102: AAAAUUUUTTTTHHHHOOOORRRR
                    103:      Ralph E. Griswold
                    104: 
                    105: 
                    106: 
                    107: 
                    108: 
                    109: 
                    110: 
                    111: 
                    112: 
                    113: 
                    114: 
                    115: 
                    116: 
                    117: 
                    118: 
                    119: 
                    120: 
                    121: 
                    122: 
                    123: 
                    124: 
                    125: 
                    126: 
                    127: 
                    128: 
                    129: Version 5.9    The University of Arizona - 7/29/84              2
                    130: 
                    131: 
                    132: 

unix.superglobalmegacorp.com

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