Attribute Grammars/Exercise 3: Expressions: Difference between revisions

From Wiki**3

< Attribute Grammars
(New page: <p><span lang="pt">A gramática seguinte admite atribuições dentro de expressões.</span></p> <table border="0" cellpadding="3"> <tr> <td align="right">S</td> <td...)
 
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
<p><span lang="pt">A gram&aacute;tica seguinte admite atribui&ccedil;&otilde;es dentro de express&otilde;es.</span></p>
#REDIRECT [[ist:Attribute Grammars/Exercise 3: Expressions]]
<table border="0" cellpadding="3">
<tr>
<td align="right">S</td>
<td align="left">-&gt;</td>
<td align="left">E</td>
</tr>
<tr>
<td align="right">E</td>
<td align="left">-&gt;</td>
<td align="left">E        <strong>+</strong> E | E        <strong>:=</strong> E |        <strong>(</strong> E        <strong>)</strong> |        <strong>id</strong></td>
</tr>
</table>
<p><span lang="pt">Quando uma express&atilde;o est&aacute; a ser analisada &eacute; necess&aacute;rio diferenciar os casos onde a express&atilde;o est&aacute; &agrave; direita, daqueles onde a express&atilde;o est&aacute; &agrave; esquerda, do sinal de atribui&ccedil;&atilde;o. Note que n&atilde;o &eacute; poss&iacute;vel atribuir um valor a uma express&atilde;o. Por exemplo a express&atilde;o    <strong>id + id := id</strong> &eacute; ilegal. No entanto, as express&otilde;es    <strong>id := ( id + id )</strong>, quer    <strong>id := ( id := id )</strong>, ou ainda    <strong>( id ) := ( id := ( id + id ) )</strong> s&atilde;o autorizadas.</span></p>
<p><span lang="pt">Considere que o operador ':=' &eacute; menos priorit&aacute;rio que o operador '+', al&eacute;m de associativo &agrave; direita, enquanto o operador '+' &eacute; associativo &agrave; esquerda.</span></p>
<p><span lang="pt">Escreva um esquema de tradu&ccedil;&atilde;o que usa um atributo herdado ( e nenhum sintetizado ) chamado    <tt>lado</tt> associado ao s&iacute;mbolo    <tt>E</tt>, e que determina se a express&atilde;o corrente est&aacute; &agrave; direita ou &agrave; esquerda da atribui&ccedil;&atilde;o. O c&oacute;digo associado &agrave; gram&aacute;tica emitir&aacute; uma mensagem de erro caso a express&atilde;o seja ilegal.</span></p>
 
== Solution ==
 
[[category:Compilers]]
[[category:Teaching]]

Latest revision as of 23:13, 5 December 2018