Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl:labs:02 [2016/10/05 23:12]
bogdan.nitulescu [Secțiunea de reguli gramaticale]
cpl:labs:02 [2016/10/05 23:18] (current)
bogdan.nitulescu [Secțiunea de declarații Bison]
Line 72: Line 72:
   * simbolul de start al gramaticii (opțional)   * simbolul de start al gramaticii (opțional)
 <code C> <code C>
-%start <​tip> ​nume1 nume2    ​+%start <​tip> ​nume  ​
 </​code>​ </​code>​
  
Line 138: Line 138:
   * ''​$$''​ reprezinta rezultatul, adica valoarea ce va fi atribuită neterminaului de la stânga regulii, cel la care se va reduce regula.   * ''​$$''​ reprezinta rezultatul, adica valoarea ce va fi atribuită neterminaului de la stânga regulii, cel la care se va reduce regula.
   * ''​$n''​ este al n-lea termen din regula sintactica.   * ''​$n''​ este al n-lea termen din regula sintactica.
-Acțiunile definite în mijlocul unei reguli se folosesc numai în anumite situații, pot folosi doar simboluri anterioare acesteia (fiindcă se execută înainte ca simbolurile următoare regulii să fie parsați) și sunt o sursă de conflicte. Vom reveni asupra acestora în laboratorul ​urmator.+Acțiunile definite în mijlocul unei reguli se folosesc numai în anumite situații, pot folosi doar simboluri anterioare acesteia (fiindcă se execută înainte ca simbolurile următoare regulii să fie parsați) și sunt o sursă de conflicte. Vom reveni asupra acestora în laboratorul ​următor.
 ==== Secțiunea de cod C ==== ==== Secțiunea de cod C ====
 Secțiunea de cod C trebuie să conțină: Secțiunea de cod C trebuie să conțină:
Line 232: Line 232:
  
  
-Gramatica devine mai stufoasă, dar neambigua. Metoda explicită presupune folosirea explicită a regulilor de precedență suportate de Bison.+Gramatica devine mai stufoasă, dar neambiguă. Metoda explicită presupune folosirea explicită a regulilor de precedență suportate de Bison.
  
-**Asociativitatea** și **precedența** pot fi specificate în urmatorul ​mod:+**Asociativitatea** și **precedența** pot fi specificate în următorul ​mod:
   * Pentru asociativitate se pot folosi: ''​%left'',​ ''​%right'',​ ''​%nonassoc''​   * Pentru asociativitate se pot folosi: ''​%left'',​ ''​%right'',​ ''​%nonassoc''​
   * Precedența operatorilor binari:   * Precedența operatorilor binari:
     * Se specifică asociativitatea folosind ''​%left''​     * Se specifică asociativitatea folosind ''​%left''​
     * Operatorii din același grup au aceeași precedență,​ iar între grupuri, precedența crește în jos.     * Operatorii din același grup au aceeași precedență,​ iar între grupuri, precedența crește în jos.
-  * Pentru a stabili precedența operatorilor unari se foloseste ''​%prec''​. Acesta schimbă precedența unei reguli la precedența tokenului ​urmator.+  * Pentru a stabili precedența operatorilor unari se foloseste ''​%prec''​. Acesta schimbă precedența unei reguli la precedența tokenului ​următor.
 <code C> <code C>
 %left ’+’ ’-’ %left ’+’ ’-’
cpl/labs/02.1475698354.txt.gz · Last modified: 2016/10/05 23:12 by bogdan.nitulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0