eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingGramatyki jezykow, ich kompilatory/interpretery i toole
Ilość wypowiedzi w tym wątku: 6

  • 1. Data: 2010-04-07 19:45:53
    Temat: Gramatyki jezykow, ich kompilatory/interpretery i toole
    Od: Seweryn Habdank-Wojewódzki <h...@g...com>

    Witam,

    Na tej grupie wiele było dyskusji na temat narzedzi
    do tworzenia parserow na bazie gramatyk formalnych.

    Mam pytanie, ktory z jezykow o niemarginalnej
    popularnosci uzywa takich tooli do wsparcia kompilatora
    tudziez interpretera? Jesli zaden popularny tego nie robi,
    to jakie sa przeciw stosowaniu tooli w takich sytuacjach,
    czyli czemu uzytkowe jezyki nie chca uzywac tooli?
    Jesli ktorys jezyk uzywa toola, to ktory. Jaka ma gramatyke
    i jaki tool jest w uzyciu?

    Pozdrawiam,
    Seweryn Habdank-Wojewódzki.


  • 2. Data: 2010-04-09 08:15:31
    Temat: Re: Gramatyki jezykow, ich kompilatory/interpretery i toole
    Od: Krzysiek Kowaliczek <k...@g...com>

    Użytkownik Seweryn Habdank-Wojewódzki napisał:
    > Mam pytanie, ktory z jezykow o niemarginalnej
    > popularnosci uzywa takich tooli do wsparcia kompilatora
    > tudziez interpretera? Jesli zaden popularny tego nie robi,

    GCC do wersji 3.4 używało YACC. Od 3.4 ma ręcznie napisany parser.
    Wyrzucenie YACC przyspieszyło pewnie to, że jest to generator
    gramatyk LALR(1) i nie bardzo nadaje się do złożonych gramatyk
    jak C++. Poniższy link opisuje m.in. problemy z generatorami
    LALR dla C++:
    http://scottmcpeak.com/elkhound/elkhound.ps

    Innym przykładem jest Ocaml, który używa wersji YACC dla tego języka.

    > to jakie sa przeciw stosowaniu tooli w takich sytuacjach,
    > czyli czemu uzytkowe jezyki nie chca uzywac tooli?

    Ręcznie pisanie parserów umożliwia większą kontrolę nad całym
    procesem i co za tym idzie lepszą możliwość informacje o błędach i
    lepszą możliwość reakcji na błędy, itp. Jeżeli podejdzie się do tego
    starannie, efekt jest świetny o czym w odnośniku poniżej (część
    przykładów jest wynikiem lepszej semantyki, a nie parsera):
    http://blog.llvm.org/2010/04/amazing-feats-of-clang-
    error-recovery.html

    Generatory parserów umożliwiają szybsze napisanie gramatyki. Oczywiście
    jest mniejsza elastyczność jeżeli chodzi o reakcję na błędy, ale przy
    odpowiednim podejściu efekt też może być zadowalający:
    http://research.swtch.com/2010/01/generating-good-sy
    ntax-errors.html

    Pozdrawiam
    KK


  • 3. Data: 2010-04-09 12:04:26
    Temat: Re: Gramatyki jezykow, ich kompilatory/interpretery i toole
    Od: Jacek Czerwinski <...@...z.pl>

    Krzysiek Kowaliczek pisze:
    > Użytkownik Seweryn Habdank-Wojewódzki napisał:

    >> to jakie sa przeciw stosowaniu tooli w takich sytuacjach,
    >> czyli czemu uzytkowe jezyki nie chca uzywac tooli?
    >
    > Ręcznie pisanie parserów umożliwia większą kontrolę nad całym
    > procesem i co za tym idzie lepszą możliwość informacje o błędach i
    > lepszą możliwość reakcji na błędy, itp. Jeżeli podejdzie się do tego
    > starannie, efekt jest świetny o czym w odnośniku poniżej (część
    > przykładów jest wynikiem lepszej semantyki, a nie parsera):
    > http://blog.llvm.org/2010/04/amazing-feats-of-clang-
    error-recovery.html
    >
    > Generatory parserów umożliwiają szybsze napisanie gramatyki. Oczywiście
    > jest mniejsza elastyczność jeżeli chodzi o reakcję na błędy, ale przy
    > odpowiednim podejściu efekt też może być zadowalający:
    > http://research.swtch.com/2010/01/generating-good-sy
    ntax-errors.html


    Wiesz coooooo, i tak i nie. W automatycznym będzie reakcja na błąd
    zawsze podobna, w ręcznym może i tu i ówdzie lepsza, ale nierówna.

    Mój Ulubiony Konpilator C++ (tm) ma jak się wydaje ręczną. Czasem to
    cholernie rozpaczliwy patch na sensowny starszy kod. (Oczywiście nie
    widzialem źródel kompilatora, odbieram po efektach)

    Gdy kod jest duży, obiektówka przekracza złożonością wyklikiwany kod
    VCL, duży projeky, ma koszmarne fałszywe komunikaty o błędach. Po
    zwaleniu specyfikacji jakiejś metody (ok!) pięcet linii dalej czepia
    się na oślep, stosunkowo często wbudowanych typów TDateTime i podobnych
    (????), oraz wnętrze stringów przestaje mu się podobać.
    Po poprawienie pierwszego błędu, następne znikają.
    Stąd wnioskuję, że ktoś to w przypływie rozpaczy przed odbiorem ostro
    ręcznie patchował.
    Same typy wbudowane (mocny rodowód pascalowy), nie są naturalnie
    kompilowane, są na to blade wzmianki w helpach, ale raczej stwierdzam na
    nos uzytkownika.

    Wolę automatyczną diagnostykę np. z Antlr, może nie jest jak idealny
    ręczny kompilator programistów którzy się nie śpieszyli, ale całkiem
    sensowna.



  • 4. Data: 2010-04-09 12:36:56
    Temat: Re: Gramatyki jezykow, ich kompilatory/interpretery i toole
    Od: Krzysiek Kowaliczek <k...@g...com>

    Użytkownik Jacek Czerwinski napisał:
    > Wiesz coooooo, i tak i nie. W automatycznym będzie reakcja na błąd
    > zawsze podobna, w ręcznym może i tu i ówdzie lepsza, ale nierówna.
    [...]
    > Wolę automatyczną diagnostykę np. z Antlr, może nie jest jak idealny
    > ręczny kompilator programistów którzy się nie śpieszyli, ale całkiem
    > sensowna.

    Jak napisałem ręczne pisanie parserów daje większe możliwości, ale
    trzeba się do tego porządnie przyłożyć. Jak chce się coś zrobić szybko
    to lepiej użyć generatora. Sam jakiś miesiąc temu napisałem parser
    jednego z języków opisu sprzętu ( SystemVerilog ). Gramatykę ma pogiętą
    prawie jak C++. Całość popełniłem w ANTLR. Po ok 8 dniach ( gramatyka
    jest niedeterministyczna ) miałem gotowy, szybko działający parser.
    Napisanie tego ręcznie zajęłoby dużo, dużo więcej czasu i przy okazji
    popełniłbym sporo błędów ( i z całą pewnością oszalał biorą pod uwagę
    jak pogięta gramatykę ma ten język ).

    Pozdrawiam
    KK


  • 5. Data: 2010-04-09 14:36:02
    Temat: Re: Gramatyki jezykow, ich kompilatory/interpretery i toole
    Od: Daniel Janus <d...@d...pl>

    Dnia 09.04.2010 Krzysiek Kowaliczek <k...@g...com>
    napisał/a:

    > Innym przykładem jest Ocaml, który używa wersji YACC dla tego języka.

    Ja bym nie nazwał ocamlyacc "wersją yacc". Te dwa narzędzia zupełnie różnią
    się pod względem komfortu używania i generowanego kodu, więc mają się do siebie
    powiedzmy jak krzesło do krzesła elektrycznego :)

    --Daniel


  • 6. Data: 2010-04-09 14:54:35
    Temat: Re: Gramatyki jezykow, ich kompilatory/interpretery i toole
    Od: Krzysiek Kowaliczek <k...@g...com>

    Użytkownik Daniel Janus napisał:
    > Ja bym nie nazwał ocamlyacc "wersją yacc". Te dwa narzędzia
    zupełnie różnią
    > się pod względem komfortu używania i generowanego kodu, więc mają się do siebie
    > powiedzmy jak krzesło do krzesła elektrycznego :)

    Ocamlyacc samą nazwą nawiązuje do YACC. Oba generatory są typu LALR(1)
    ( YACC dodatkowo ma GLR ). Używają tej samej składni. Jeżeli chodzi o
    implementacje gramatyki to nie ma żadnej różnicy, t.j. tak samo trzeba
    walczyć z konfliktami w jednym jak i drugim. Ocamlyacc ma przyjemniejszy
    interfejs, no i sam Ocaml ma algebraiczne typy danych.

    Pozdrawiam
    KK

strony : [ 1 ]


Szukaj w grupach

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: