<div dir="ltr">Salut, Calin,<div><br></div><div>Am sa trec pe lista discutia inceputa la laborator, pentru a o poatea vedea si ceilalti colegi care se mai lovesc de acesta problema. Asa cum ti-a dat si Lavinia hint-ul in intrebarea din mailul precedent; din moment ce nu se poate face reduce pentru nicio regula, dar inca exista in gramatica reguli pentru care se poate face un match "partial" (daca se poate spune asa) se va face shift.</div><div><br></div><div>Plecand de la exemplele tale: <span style="font-size:12.8px"> </span><span style="font-size:12.8px">"[a</span><span style="font-size:12.8px">[1,2].foo]" sau "[a [foo]]" </span></div><div><ul><li><span style="font-size:12.8px"> in momentul in care se ajungi sa ai </span>"[a" pe stiva si lookahead-ul "[" -> in acest caz, poti face doar shift. Ai 2 reguli care fac "match partial", in sensul ca nu ai ajuns la ceva ce nu este atins de nicio regula din gramatica si atunci e clar eroare de sintaxa, dar nici nu ai informatii suficiente incat sa alegi una dintre cele 2.<br></li><li> in momentul in care ai "[a[1, 2]" sau "[a[foo]" pe stiva, poti sa decizi ca pentru "a[1, 2]" faci reduce-ul la substring si pentru "[foo]" la dispatch. Mai mult decat atat, exista un atom care diferentiaza clar regula pentru substring, de regula dispatch. Nu-mi dau seama daca ar trebui sa ti-l zic eu sau sa te las pe tine sa-l descoperi. :)</li></ul><div>O sa incerc ceva la mijloc si o sa te ajut cu un nou hint: Ce nu apare intr-un dispatch, dar apare intr-un substring? Uita-te dupa '[', nu inainte.</div></div><div><br></div><div>Cheers,</div><div>Andrei</div></div><div class="gmail_extra"><br><div class="gmail_quote">Pe 25 octombrie 2016, 13:06, Lavinia Ghica via cpl <span dir="ltr"><<a href="mailto:cpl@cursuri.cs.pub.ro" target="_blank">cpl@cursuri.cs.pub.ro</a>></span> a scris:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Salut,<br>
<br>
Sintaxa este valida.<br>
<br>
Depinde cum scrii gramatica. De exemplu, ce se intampla atunci cand a parsat ‘[‘ si IDENTIFER, lookahead-ul este ‘[‘ si nu poate sa faca reduce pentru nicio regula?<br>
<br>
Spor,<br>
Lavinia<br>
<div class="HOEnZb"><div class="h5"><br>
> On 24 Oct 2016, at 17:36, Călin Cruceru via cpl <<a href="mailto:cpl@cursuri.cs.pub.ro">cpl@cursuri.cs.pub.ro</a>> wrote:<br>
><br>
> Salutare,<br>
><br>
> Nu este clar din manualul limbajului dacă un apel folosind sintaxa de<br>
> slicing pe string-uri poate fi folosit direct ca obiectul pe care se<br>
> va apela o funcție, folosind sintaxa de dispatch. Cu alte cuvinte,<br>
> este sintaxa următoare validă<br>
><br>
> [someString[lhs, rhs].toInt]<br>
><br>
> ?<br>
><br>
> Motivul pentru care întreb este că nu mi-e clar cum poate fi asta<br>
> parsat de un parser LALR(1), deoarece în momentul în care a parsat "["<br>
> "id" și lookahead-ul este "[", nu are cum să își dea seama dacă<br>
> trebuie să facă shift, crezând că "[" face parte din primul argument<br>
> (care se întâmplă să fie tot un dispatch), sau să facă reduce, crezând<br>
> că face parte dintr-o expresie de tip "slice".<br>
><br>
> Mersi și scuze dacă mi-a scăpat ceva.<br>
><br>
> Călin<br>
> ______________________________<wbr>_________________<br>
> cpl mailing list<br>
> <a href="mailto:cpl@cursuri.cs.pub.ro">cpl@cursuri.cs.pub.ro</a><br>
> <a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl" rel="noreferrer" target="_blank">http://cursuri.cs.pub.ro/cgi-<wbr>bin/mailman/listinfo/cpl</a><br>
<br>
______________________________<wbr>_________________<br>
cpl mailing list<br>
<a href="mailto:cpl@cursuri.cs.pub.ro">cpl@cursuri.cs.pub.ro</a><br>
<a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl" rel="noreferrer" target="_blank">http://cursuri.cs.pub.ro/cgi-<wbr>bin/mailman/listinfo/cpl</a><br>
</div></div></blockquote></div><br></div>