Annotation of 43BSD/contrib/icon/man/cat2/patterns.2, revision 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.