<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://robots.hlt.inesc-id.pt/w/pt/index.php?action=history&amp;feed=atom&amp;title=Attribute_Grammars%2FExercise_13%3A_Operadores_L%C3%B3gicos</id>
	<title>Attribute Grammars/Exercise 13: Operadores Lógicos - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://robots.hlt.inesc-id.pt/w/pt/index.php?action=history&amp;feed=atom&amp;title=Attribute_Grammars%2FExercise_13%3A_Operadores_L%C3%B3gicos"/>
	<link rel="alternate" type="text/html" href="https://robots.hlt.inesc-id.pt/w/pt/index.php?title=Attribute_Grammars/Exercise_13:_Operadores_L%C3%B3gicos&amp;action=history"/>
	<updated>2026-05-23T08:56:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://robots.hlt.inesc-id.pt/w/pt/index.php?title=Attribute_Grammars/Exercise_13:_Operadores_L%C3%B3gicos&amp;diff=9988&amp;oldid=prev</id>
		<title>Root: Created page with &quot;{{TOCright}} == Problema ==  Uma máquina reconhece os símbolos de &#039;&#039;&#039;0&#039;&#039;&#039; a &#039;&#039;&#039;9&#039;&#039;&#039;, &#039;&#039;&#039;~&#039;&#039;&#039; e &#039;&#039;&#039;!&#039;&#039;&#039;. Os símbolos de &#039;&#039;&#039;0&#039;&#039;&#039; a &#039;&#039;&#039;9&#039;&#039;&#039; são organizados em sequências pos...&quot;</title>
		<link rel="alternate" type="text/html" href="https://robots.hlt.inesc-id.pt/w/pt/index.php?title=Attribute_Grammars/Exercise_13:_Operadores_L%C3%B3gicos&amp;diff=9988&amp;oldid=prev"/>
		<updated>2018-07-03T12:15:43Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{TOCright}} == Problema ==  Uma máquina reconhece os símbolos de &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; a &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;~&amp;#039;&amp;#039;&amp;#039; e &amp;#039;&amp;#039;&amp;#039;!&amp;#039;&amp;#039;&amp;#039;. Os símbolos de &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; a &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039; são organizados em sequências pos...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{TOCright}}&lt;br /&gt;
== Problema ==&lt;br /&gt;
&lt;br /&gt;
Uma máquina reconhece os símbolos de &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; a &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;~&amp;#039;&amp;#039;&amp;#039; e &amp;#039;&amp;#039;&amp;#039;!&amp;#039;&amp;#039;&amp;#039;. Os símbolos de &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; a &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039; são organizados em sequências possivelmente delimitadas por &amp;#039;&amp;#039;&amp;#039;!&amp;#039;&amp;#039;&amp;#039;. Se a sequência numérica não estiver delimitada, então o seu valor é simplesmente o da soma dos seus dígitos (em base 10). Sequências delimitadas indicam o número correspondente aos dígitos em base 10. O operador &amp;#039;&amp;#039;&amp;#039;~&amp;#039;&amp;#039;&amp;#039; calcula o valor do máximo dos seus argumentos (este operador é associativo à esquerda).&lt;br /&gt;
&lt;br /&gt;
Exemplo: à sequência &amp;#039;&amp;#039;&amp;#039;1934~!26!~12&amp;#039;&amp;#039;&amp;#039; corresponde ao valor max(17, 26, 3) = 26.&lt;br /&gt;
&lt;br /&gt;
# Identifique a gramática atributiva correspondente ao problema, descrevendo o significado de todos os atributos, assim como os respectivos tipos. Que tipo de gramática obteve?&lt;br /&gt;
# Identifique a árvore de sintaxe decorada e o grafo de dependências para a frase &amp;#039;&amp;#039;&amp;#039;123~!123!&amp;#039;&amp;#039;&amp;#039; (valor 123).&lt;br /&gt;
# Escreva uma especificação YACC que implemente a gramática descrita em 1. Codifique toda a especificação (incluindo as zonas de declarações e de regras) e todas as funções auxiliares. &amp;#039;&amp;#039;&amp;#039;Não utilizar variáveis globais.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Gramática Atributiva ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;E&amp;#039;&amp;#039;&amp;#039; representa uma expressão; &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; representa um número; &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039; representa uma sequência de dígitos não delimitada; e &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039; representa uma sequência de dígitos delimitada. O atributo booleano &amp;#039;&amp;#039;&amp;#039;v&amp;#039;&amp;#039;&amp;#039; representa o valor associado a cada símbolo.&lt;br /&gt;
&lt;br /&gt;
[[image:attrgram13.jpg]]&lt;br /&gt;
&lt;br /&gt;
Como se pode ver pelas acções semânticas associadas à gramática, todos os atributos são sintetizados, pelo que a gramática é do tipo S.&lt;br /&gt;
&lt;br /&gt;
== Árvore Sintáctica Decorada e Grafo de Dependências ==&lt;br /&gt;
&lt;br /&gt;
[[image:attrgramtree13.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Especificação YACC (versão directa a partir da gramática acima) ==&lt;br /&gt;
&lt;br /&gt;
Considerando que a gramática acima é do tipo S, a realização em YACC é trivial e deixa-se como exercício para o leitor.&lt;br /&gt;
&lt;br /&gt;
[[category:Compiladores]]&lt;br /&gt;
[[category:Ensino]]&lt;/div&gt;</summary>
		<author><name>Root</name></author>
	</entry>
</feed>