Encyklopedia w Markpol

Reklama:

Dopasowanie do wzorca to operacja, gdzie pewne wyrażenie sprawdza się ze wzorcem, w którym może znajdować się jedno lub więcej "wolnych miejsc". W wyniku, o ile nastąpiło dopasowanie otrzymuje się listę wyrażeń które dopasowały się do wolnych miejsc wzorca. Dopasowywanie do wzorca jest bardzo ekspresywną techniką programistyczną. Dwa najpopularniejsze systemy to:
  • wyrażenia regularne
  • wzorce symboliczne

    Wyrażenia regularne

    W większoścy nowych języków wyrażeń regularnych można używać jako wzorców, np (Perl):
    if ($numer_ip =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/)
    {
        
  • pasuje do wzorca, kolejne liczby w $1 $2 $3 $4 } else {
  • nie pasuje do wzorca }
  • Dopasowywanie to jest jednym z głównych źródeł siły ekspresji i zwięzłości Perla i innych nowych języków (Ruby, PHP, Python itd.) Analogiczny kod w C musiałby korzystać z biblioteki zapewniającej dopasowywane do wzorców (np. PCRE), lub byłby proporcjonalnie gigantyczny, i zarazem mało czytelny i z dużymi szansami na wystąpienie błedów.

    Wzorce symboliczne

    W językach funkcyjnych zwykle używa się wzorców symbolicznych - termów ze zmiennymi które dopasowuje się do danego wyrażenia przez unifikację. Na przykład lista to jak wiadomo nil albo cons. Tak więc możemy (Ocaml):
    match zmienna with
               [] -> "Lista jest pusta"
    |       x::[] -> "Lista ma jeden element: " ^ x
    |    x::y::[] -> "Lista ma dwa elementy: " ^ x ^ " i " ^ y
    | x::y::z::[] -> "Lista ma trzy elementy: " ^ x ^ ", " ^ y ^" i " ^ z
    | x::y::z::_  -> "Lista ma więcej niż trzy elementy: " ^ x ^ ", " ^ y ^", " ^ z ^ "..."
    
    Czy też przekształcać symbole w inne wyrażenia (Ocaml, kod z texvc):
    let get_encoding = function
        UTF8   -> "\\usepackage{ucs}\n\\usepackage[utf8]{inputenc}\n"
      | LATIN1 -> "\\usepackage[latin1]{inputenc}\n"
      | LATIN2 -> "\\usepackage[latin2]{inputenc}\n"
    

    Chcesz wypromować swoją stronę w internecie?? - nie zwlekaj pozycjonowanie w Luman.biz to rozsądny wybór
    2005 Encyklopedia
    These materials are based onWikipedia and licensed under the GNU FDL
    Arturo Perez Reverte|Verizon Ringtones|Compare|Remortgages|Apply for Credit Card