Activism, Apple, Computer Science, Culture, DB, Drupal, Guitar, Languages Processing, LaTeX, Left, Linux, Mac, National Geographic, Open Source, Perl, Portugal, XML, World, ...

Ciências da Computação

Porque é que se usam duas gramáticas para a mesma linguagem?

Antes de propor uma explicação linear, seria interessante apresentar uma citação que, após devidamente argumentada, poderá servir para orientar a resposta final:

The grammar needed to specify a programming language can be classified by its position in the Chomsky hierarchy. The syntax of most programming languages can be specified using a Type-2 grammar, i.e., they are context-free grammars.

Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Section 2.2: Pushdown Automata, pp.101–114.

Nela surge o conceito de classificação de uma gramática. Essa classificação é -- não só -- efectuada através de formas normais que servem de moldes onde se podem encaixar as produções de uma gramática.


Formas Normais de Gramáticas

Gramáticas de Atributos


Gramática de atributos

Uma gramática de atributos é uma maneira formal de definir atributos para as produções de uma dada textgramática, associando esses atributos a valores. A avaliação ocorre no nós da árvore de derivação quando a linguagem é tratada por um analisador sintáctico (ou um compilador).

Existem dois tipos distintos de atributos, sendo uns sintetizados e outros herdado. Os primeiros resultam das regras de produção da gramática, sendo que também podem usar o valor de atributos herdados. Os segundos são atributos que são passados para as folhas a partir de nós parentes.

Desta forma, as gramáticas de atributos podem transportar a informação de qualquer sítio para qualquer sítio na árvore sintáctica, isto de maneira controlada e formal. Assim sendo, ilustram-se as razões que tornam as gramáticas de atributos serem poderosas.


Herança

Syndicate content