eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingparsowanieRe: parsowanie
  • Data: 2011-02-07 22:30:31
    Temat: Re: parsowanie
    Od: "Wojciech \"Spook\" Sura" <spook"mad@hatter"op.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Dnia 07-02-2011 o 21:23:26 Zbigniew Malec <a...@i...invalid>
    napisał(a):
    (...)

    W moim parserze wyrażeń matematycznych zastosowałem wariant ze wstępną
    (uproszczoną) analizą składniową. Fragment pliku wejściowego dla
    generatora tokenizera wygląda tak:

    # Stan 1 - Oczekiwanie na obiekt numeryczny

    1,integer->2=[0-9]+
    1,unaryoperator->1=(\-)|(\!)
    1,variable->2=[a-zA-Z][a-zA-Z0-9]*
    1,function->1=[a-zA-Z][a-zA-Z0-9]*\(
    1,openparenthesis->1=\(
    (...)

    # Stan 2 - Oczekiwanie na operator

    2,closeparenthesis->2=\)
    2,operator->1=(\+)|(\-)|(\*)|(\/)|(\\)|(\%)|(\^)|(\<
    \<)|(\>\>)|(\<)|(\>)|(\<\=)|(\>\=)|(\=\=)|(\!\=)|(\&
    )|(\|)|(\#)
    (...)

    Czyli na przykład f(x*(3+4)) zostanie rozpoznane jako:

    function, variable, operator, openparenthesis, integer, operator, integer,
    closeparenthesis, closeparenthesis.

    Analogicznie -2-3 jako:

    unaryoperator integer operator integer

    Moim zdaniem taka wstępna analiza składniowa jest bardzo wygodna, bo
    pozwala na wczesne wykrycie podstawowych błędów składniowych. Jeśli na
    przykład ktoś postawi operator binarny zaraz za nawiasem otwierającym -
    gdzie oczekiwany jest obiekt numeryczny - pierwszy zaprotestuje tokenizer,
    zgłaszając nie rozpoznany obiekt.

    Jest też minus tego rozwiązania: błąd zgłoszony użytkownikowi nie jest
    zbyt czytelny ("Nie rozpoznany token" lub "Nieprawidłowe wyrażenie" kontra
    "Nieoczekiwane wystąpienie operatora binarnego"). Wszystko jednak zależy
    od potrzeb :)

    Pozdrawiam -- Spook.

    --
    Używam klienta poczty Opera Mail: http://www.opera.com/mail/

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: