[cpl] [Tema 1] Conflict shift/reduce
Marius Ungureanu
therzok at gmail.com
Sun Nov 8 21:30:57 EET 2015
Salut,
Ideea e sa mut reduce-urile sa fie pe cazuri particulare ale combinatiilor
(de exemplu cazuri particulare de precedenta) in loc sa raman pe gramatica
generala, nu?
Mersi,
Marius
On Nov 8, 2015 9:07 PM, "Bogdan Nitulescu via cpl" <cpl at cursuri.cs.pub.ro>
wrote:
> Salut,
>
> Ce zici tu este ca e dificil sa faci diferenta intre dispatch si vector.
> Dar interpretarea nu este ambigua, se poate determina din context. De
> exemplu, sa luam urmatoarele expresii:
>
> [id] - nu poate fi decat dispatch , [] care nu este precedat de o expresie
> nu e index
> expr[id] - nu poate fi decat index
> [id1 [id2]] - e interpretat unic ca dublu dispatch, id1(id2()) intr-un
> limbaj C-like;
> [id1[id2].id3] - nu poate fi decat un dispatch + index (id1[id2]).id3()
> in C++
>
> Un parser care recunoaste asa ceva e un pic mai complex, si daca e nevoie,
> poti folosi o solutiionare implicita a unui conflict shift-reduce, cu
> reguli de precedenta, la un moment dat; si prelucrari pe arborele sintactic
> rezultat in urma parserului, daca nu gasesti alta solutie.
>
> (BTW, Testele pe care le-am pus noi pentru tema sunt un pic mai permisive
> si nu acopera chiar toate cazurile de mai sus)
>
> Bogdan
>
> On 11/8/2015 4:42 PM, Marius Ungureanu via cpl wrote:
>
> On Nov 8, 2015 4:43 AM, "Marius Ungureanu" <therzok at gmail.com> wrote:
> >
> > Salut,
> >
> > Avem cazul in care avem un dispatch, iar primul argument este de tip
> substring:
> >
> > * Caz real: [hello [3, 5].length]
> > * Caz teoretic: [expresie argument]
> >
> > Gramatica define ambigua in acest context pentru ca am avea 2 cazuri
> > de conflict:
> >
> > [expresie <inceput de dispatch>]
> > sau
> > [expresie_substring]
> >
>
> Vreau sa clarific. Poate sa faca shift si sa intre in continuare de
> substring sau face reduce pentru ca incepe un dispatch si va parsa
> urmatorul termen.
>
> [hello[
>
> Poate fi:
>
> [expresie <inceput argument dispatch>]
> [expresie <inceput substring>]
>
> Nu vad nicio solutie prin care se poate rezolva ambiguitatea in Bison,
> ambele cazuri fiind pertinente si nefiind vorba de prioritate a
> operatorilor de stanga (avand aceeasi prioritate definita in manual).
>
> Acelasi conflict exista si pentru implementarea vectorilor.
>
> O solutie care ar fi simpla din punct de vedere sintactic, dar ar schimba
> toata tema ar fi ca primul argument al unui dispatch sa fie delimitat de
> metoda apelata printr-un separator. I.e. ':' cum face si objc.
>
> Multumesc,
> Marius
>
>
> _______________________________________________
> cpl mailing listcpl at cursuri.cs.pub.rohttp://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl
>
>
>
> _______________________________________________
> cpl mailing list
> cpl at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/cpl/attachments/20151108/6440c111/attachment.html>
More information about the cpl
mailing list