eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Resolve'ing identyfikatorów
Ilość wypowiedzi w tym wątku: 10

  • 1. Data: 2010-09-01 21:37:13
    Temat: Resolve'ing identyfikatorów
    Od: "Wojciech \"Spook\" Sura" <spook"mad@hatter"op.pl>

    Witam!

    Projektuję interpreter wyrażeń matematycznych. Chcę zrealizować go
    kilkuetapowo - najpierw wyrażenie będzie tłumaczone do drzewa
    składniowego, potem do drzewa wyrażenia, a na końcu drzewo wyrażenia
    rekurencyjnie będzie obliczane.

    Etap konwersji drzewa składniowego (zawierającego - z grubsza - głównie
    tokeny) chcę zrealizować rekurencyjnie: każdy węzeł drzewa wygeneruje
    odpowiednie poddrzewo wyrażenia, dokonując w razie potrzeb odpowiednich
    przekształceń czy dodatkowych operacji.

    Jeśli powyższy opis nie jest dostatecznie czytelny, proponuję zerknąć do
    przykładu:

    www.spook.freshsite.pl/Temporary/Interpreter.png

    Moje pytanie brzmi: na którym etapie przetwarzania powinno dojść do
    stwierdzenia czy dany identyfikator (np. x) jest zmienną, parametrem
    dodawanej funkcji lub czymś jeszcze innym?

    Pozdrawiam -- Spook.

    --
    ! ._______. Warning: Lucida Console sig! //) !
    ! || spk || www.spook.freshsite.pl / _ """*!
    ! ||_____|| spook at op.pl / ' | ""!
    ! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
    ! |_|[]_|_| May the SOURCE be with you! \/) \ !


  • 2. Data: 2010-09-02 04:57:01
    Temat: Re: Resolve'ing identyfikatorów
    Od: Jacek Czerwinski <...@...z.pl>

    W dniu 2010-09-01 23:37, Wojciech "Spook" Sura pisze:

    >
    > Moje pytanie brzmi: na którym etapie przetwarzania powinno dojść do
    > stwierdzenia czy dany identyfikator (np. x) jest zmienną, parametrem
    > dodawanej funkcji lub czymś jeszcze innym?

    Pobiezna mysl jeszcze nie obudzonego mozgu: w jezyku z dynamicznymi
    deklaracjami nie dysponujesz taka wiedza na etapie analizy
    syntaktycznej, zostaje tylko wykonanie. W jezyku z obowiazkowymi
    deklaracjami mozna (chyba) na etapie parsowania.
    Chociaz temat zachodzi na semantyke, np zmienne z zewnetrznego zakresu
    nie sa do tak latwego ustalenia czysto syntaktycznym parserem. W
    "prawdziwych" jezykach ktore to posiadaja, to jest wcale niebanalny
    runtime (ramki, pierdoly itd).




  • 3. Data: 2010-09-02 05:27:27
    Temat: Re: Resolve'ing identyfikatorów
    Od: Jacek Czerwinski <...@...z.pl>

    W dniu 2010-09-02 06:57, Jacek Czerwinski pisze:
    > W dniu 2010-09-01 23:37, Wojciech "Spook" Sura pisze:
    >
    >>
    >> Moje pytanie brzmi: na którym etapie przetwarzania powinno dojść do
    >> stwierdzenia czy dany identyfikator (np. x) jest zmienną, parametrem
    >> dodawanej funkcji lub czymś jeszcze innym?
    >
    > np zmienne z zewnetrznego zakresu
    > nie sa do tak latwego ustalenia czysto syntaktycznym parserem. W
    > "prawdziwych" jezykach ktore to posiadaja, to jest wcale niebanalny
    > runtime (ramki, pierdoly itd).
    >

    Stwierdzenia czy pobrania wartosci. Z ramkami itd to problem pobrania a
    stwierdzone musi byc wczesniej.

    W sumie "stwierdzenie czy pobranie wartosci" to wazne pytanie, chodzi Ci
    o akademicka poprawnosc (X jest argumentem z poziomu o jeden wyzej), czy
    po prostu liczbe? W stosowym interpreterze to na runtime proste cofanie
    sie po stosie i masz.


  • 4. Data: 2010-09-02 07:22:21
    Temat: Re: Resolve'ing identyfikatorów
    Od: Krzysiek Kowaliczek <k...@g...com>

    Użytkownik Wojciech "Spook" Sura napisał:
    > Moje pytanie brzmi: na którym etapie przetwarzania powinno dojść do
    > stwierdzenia czy dany identyfikator (np. x) jest zmienną, parametrem
    > dodawanej funkcji lub czymś jeszcze innym?

    Na następnym etapie po parsowaniu zwanym analizą semantyczną.
    Zobacz na moje przykłady z Lemon++, jest tam prosty kompilator
    i interpreter ( examples/taste ).
    http://sourceforge.net/projects/lemonxx/

    Pozdrawiam
    KK


  • 5. Data: 2010-09-02 10:00:42
    Temat: Re: Resolve'ing identyfikatorów
    Od: Mateusz Ludwin <n...@s...org>

    Jacek Czerwinski wrote:

    > Pobiezna mysl jeszcze nie obudzonego mozgu: w jezyku z dynamicznymi
    > deklaracjami nie dysponujesz taka wiedza na etapie analizy
    > syntaktycznej, zostaje tylko wykonanie. W jezyku z obowiazkowymi
    > deklaracjami mozna (chyba) na etapie parsowania.

    Moim zdaniem jak najbardziej da się to zrobić na etapie analizy drzewa, przecież
    interpreter musi przetrzymywać tablicę symboli dokładnie w taki sposób, w jaki
    robi to kompilator.

    Na etapie tworzenia AST, napotykając := patrzymy na lewo i po przetworzeniu
    deklaracji funkcji f dodajemy ją do tablicy symboli, jednocześnie zapamiętując,
    że x i y to nazwy atrybutów funkcji f. Potem przetwarzamy prawą stronę i
    jednoznacznie możemy stwierdzić czym jest każda nazwa. Po wyjściu z :=
    zostawiamy w tablicy symboli deklarację f, wyrzucając niepotrzebne x i y.
    --
    Mateusz Ludwin mateuszl [at] gmail [dot] com


  • 6. Data: 2010-09-02 12:21:49
    Temat: Re: Resolve'ing identyfikatorów
    Od: Krzysiek Kowaliczek <k...@g...com>

    Użytkownik Mateusz Ludwin napisał:
    > Moim zdaniem jak najbardziej da się to zrobić na etapie analizy drzewa,
    > przecież interpreter musi przetrzymywać tablicę symboli dokładnie w taki
    > sposób, w jaki robi to kompilator.

    Tak. Dla języków dynamicznych da się statycznie sprawdzić czy
    identyfikator występuje w danym zakresie. Nie da się zawsze
    statycznie ustalić typ. Uwaga interpretacja i kompilacja nie ma tu nic
    do rzeczy. Tak jak język dynamiczny może być kompilowany,
    tak język ze statycznym systemem typów może być interpretowany.

    Pozdrawiam
    KK


  • 7. Data: 2010-09-02 13:51:10
    Temat: Re: Resolve'ing identyfikatorów
    Od: Mateusz Ludwin <n...@s...org>

    Krzysiek Kowaliczek wrote:

    > Tak. Dla języków dynamicznych da się statycznie sprawdzić czy
    > identyfikator występuje w danym zakresie. Nie da się zawsze
    > statycznie ustalić typ. Uwaga interpretacja i kompilacja nie ma tu nic
    > do rzeczy. Tak jak język dynamiczny może być kompilowany,
    > tak język ze statycznym systemem typów może być interpretowany.

    Różnica jest taka, że między kolejnymi wywołaniami interpretera trzeba
    przechowywać definicje funkcji i zmiennych z poprzednich wywołań. Przy
    kompilacji drzewko jest tylko jedno.
    --
    Mateusz Ludwin mateuszl [at] gmail [dot] com


  • 8. Data: 2010-09-02 19:44:38
    Temat: Re: Resolve'ing identyfikatorów
    Od: Krzysiek Kowaliczek <k...@g...com>

    Użytkownik Mateusz Ludwin napisał:
    > Różnica jest taka, że między kolejnymi wywołaniami interpretera trzeba
    > przechowywać definicje funkcji i zmiennych z poprzednich wywołań. Przy
    > kompilacji drzewko jest tylko jedno.

    Nie rozumiem jak to się ma do analizy semantycznej, która dla języków
    ze statycznym systemem typów zarówno dla kompilatora i interpretera
    wygląda tak samo.

    Pozdrawiam
    KK


  • 9. Data: 2010-09-03 09:07:27
    Temat: Re: Resolve'ing identyfikatorów
    Od: Mateusz Ludwin <n...@s...org>

    Krzysiek Kowaliczek wrote:

    > Nie rozumiem jak to się ma do analizy semantycznej, która dla języków
    > ze statycznym systemem typów zarówno dla kompilatora i interpretera
    > wygląda tak samo.

    Oczywiście że analiza semantyczna wygląda tak samo, odniosłem się do "Uwaga
    interpretacja i kompilacja nie ma tu nic do rzeczy."

    Będzie trochę więcej drzewek.
    --
    Mateusz Ludwin mateuszl [at] gmail [dot] com


  • 10. Data: 2010-09-04 08:52:49
    Temat: Re: Resolve'ing identyfikatorów
    Od: "Wiktor S." <wswiktor&poczta,fm@no.spam>

    > Resolve'ing

    interesujący (po)tworek...


    --
    Azarien

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: