eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJaki automat dla wyrażeń regularnych z bactrackigiem? › Re: Jaki automat dla wyrażeń regularnych z bactrackigiem?
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!eps
    ilon.rdc.pl!not-for-mail
    From: Mariusz Kruk <M...@e...eu.org>
    Newsgroups: pl.comp.programming
    Subject: Re: Jaki automat dla wyrażeń regularnych z bactrackigiem?
    Date: Tue, 23 Mar 2010 08:35:06 +0100
    Organization: Denied!
    Lines: 49
    Message-ID: <s...@e...rdc.pl>
    References: <2...@p...null.onet.pl.invalid>
    <hnrjc3$q90$1@news.onet.pl>
    <2...@p...null.onet.pl.invalid>
    <hnu581$kvl$1@news.onet.pl>
    <2...@p...null.onet.pl.invalid>
    <ho8igg$gje$1@news.onet.pl>
    <2...@p...null.onet.pl.invalid>
    <ho8kj3$mjk$1@news.onet.pl>
    NNTP-Posting-Host: epsilon.rdc.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1269329763 25861 77.252.106.53 (23 Mar 2010 07:36:03 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Tue, 23 Mar 2010 07:36:03 +0000 (UTC)
    User-Agent: slrn/pre1.0.0-18 (Linux)
    Xref: news-archive.icm.edu.pl pl.comp.programming:185357
    [ ukryj nagłówki ]

    epsilon$ while read LINE; do echo \>"$LINE"; done < "Michoo"
    >>>>> Wydaje mi się, że "wystarczy" zarezerwować miejsce w automacie na
    >>>>> dodatkowe stany i dołożyć je, kiedy ciąg już jest znany. Wszak to "\1"
    >>>>> to nic innego, jak ustalony ciąg znaków.
    >>>> Nic podobnego, \1 może być dowolnym ciągiem. Nie wiesz, ile będziesz
    >>>> potrzebował zarezerwować.
    >>> A ile musisz zarezerwować na [a-z]+
    >>> ?
    >> W automacie skończonym? Zero. Nie ma żadnego "bufora" - automat zmienia
    >> stan na podstawie funkcji przejść.
    >W automacie - nie (no chyba, że ze stosem), ale automat ma jakieś
    >"wejście" i ono musi zadbać o odpowiednie buforowanie.

    Nie ma żadnego buforowania. Czytasz po znaku z wejścia i zmieniasz stany
    zgodnie z funkcją przejść. Nie masz żadnej wiedzy odnośnie znaków
    wcześniejszych/późniejszych. W przypadku backrefów musisz tę wiedzę
    mieć.

    >>> Skoro dopasowałeś ten tekst do miejsca wystąpienia backrefa to znaczy,
    >>> że gdzieś go masz w buforze na wypadek gdybyś się wycofywał.
    >> Ja mogę mieć wszystko, ale który automat rozumie pojęcie "bufora"? :)
    >> O to się cały czas rozchodzi - nie o algorytm, tylko o nazwę konstrukcji
    >> teoretycznej.
    >Automat ze stosem? - Ma "bufor". Inaczej (bez bufora) chyba nie da się
    >zapewnić samego _zapamiętania_ dopasowanych ciągów. A to jest pierwszy
    >etap do ich późniejszego dopasowania. Teorii niestety nie znam na tyle,
    >żeby coś więcej powiedzieć.

    Nie chce mi się za bardzo wgłębiać (a niewiele pamiętam ;->), ale
    wikipedia twierdzi, że:
    "Many features found in modern regular expression libraries provide an
    expressive power that far exceeds the regular languages. For example,
    many implementations allow grouping subexpressions with parentheses and
    recalling the value they match in the same expression (backreferences).
    This means that a pattern can match strings of repeated words like
    "papa" or "WikiWiki", called squares in formal language theory. The
    pattern for these strings is (.*)\1.

    However, the language of squares is not regular, nor is it
    context-free."

    Czyli backrefy wychodzą poza języki bezkontekstowe, a więc PDA nie
    wystarczy.

    --
    d'`'`'`'`'`'`'`'`'`'`'`'`'Yb
    `b K...@e...eu.org d'
    d' http://epsilon.eu.org/ Yb
    `b,-,.,-,.,-,.,-,.,-,.,-,.d'

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: