Engenharia Gramatical
Sumários
31 Maio de 2010
- GraAlEditor, um editor-analisador de Gramáticas:
- Preparação de um artigo a submeter ao CoRTA2010: discussão dos contributos dos 4 grupos em termos de funcionalidades (visualização incluida, ou não) e da arquitectura;
- Próxima tarefa: desenvolver a secção especific distribuida a cada grupo.
24 Maio de 2010
- GraAlEditor, um editor-analisador de Gramáticas:
- Preparação de um artigo a submeter ao CoRTA2010: discussão dos contributos dos 4 grupos, definição dos objectivos do artigo e da sua estrutura (secções e seu conteúdo) e escrita do Abstract;
- Próxima tarefa: definir e enviar proposta de arquitectura.
17 Maio de 2010
- GraAlEditor, um editor-analisador de Gramáticas:
- Preparação de um artigo a submeter ao CoRTA2010: foi decidido que cada grupo enviaria por email um Abstract completo em inglês até 5ªf à noite para ser depois feita a fusão (PRH+DCC).
- Introdução às Métricas para Gramáticas de Atributos
- Métricas de Tamanho:
- (MTA1) #A = #AS + #AH
- (MTA2) #RC (regras de cálculo)
- (MTA3) #CC (condições de contexto)
- (MTA4) #RT (regras de tradução)
- (MCA1) FanIN (valor médio considerando os GDLocais a todos as p em P)
- (MCA2) FanOUT (valor médio considerando os GDLocais a todos as p em P)
- Métricas de Forma:
- (MFA1) Complexidade dos Atributos: (#ACompl / #A)
- #Atributos Atómicos
- #Atributos Complexos
- (MFA2) Complexidade das Operações: (#OCompl / (#RT + #CC + #RT))
- (MFA3) Esquema de Cálculo I
- RCpureS (puramente Sintetizado)
- RCpureI (puramente Herdado)
- RCmixSI
- (MFA4) Esquema de Cálculo II
- RCAgregadas
- RCNãoAgregadas
- (MFA5) Esquema das Restrições Contextuais
- CCTop
- CCBottom
- CCCentered
- (MFA6) Esquema das Regras de Traduçao
- RTTop
- RTBottom
- RTCentered
03 Maio de 2010
- Revisão dos elementos já disponíveis para avaliação dos alunos a este módulo.
- Revisão dos Critérios para avaliar a qualidade das gramáticas, GIC e GA: usabilidade (em termos de leitura, derivação de frases e manutenção); e eficiência (em termos reconhecedor/processor gerado, e geração) e métricas; Discussão da relação das métricas obtidas com a qualidade da linguagem.
- GraAlEditor, um editor-analisador de Gramáticas:
- Preparação de um artigo a submeter ao CoRTA2010: definição do título, abstratct e estrutura (LaTeX distribuido por email para todos os alunos).
26 Abril de 2010
- GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
- Discussão dos Trabalhos realizados pelos grupos:
- André Rocha e Márcio Gomes
19 Abril de 2010
- GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
- Discussão dos Trabalhos realizados pelos grupos:
- Daniel Rocha e Jorge Mendes
12 Abril de 2010
- GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
- Discussão dos Trabalhos realizados pelos grupos:
- André Santos e Miguel Regedor
- José Luis Freitas e Helder Silva
15 Março de 2010
- Cálculo das métricas para a gramática do Exemplo 5 :
| Original | GIC5T1 | GIC5T2 |
#T | 14 | 14 | 14 |
#NT | 12 | 7 | 14 |
#P | 17 | 9 | 19 |
#PU | 5 | 0 | 5 |
#R | 3 | 0 | 3 |
$RHS | 38/17=2.24 | 27/9=3 | 40/19=2.11 |
$ALT | 17/12=1.42 | 9/7= 1.29 | 19/14=1.36 |
#Modulos | 1 | 1 | 1 |
Fan-in | | | |
Fan-out | | | |
#RD | 12+1=13 | 7 +1 = 8 | 14+1=15 |
#TabLL1 | 12*14=168 | 7*14= 98 | 14*14= 196 |
F1 | 3+0 | 0+0 | 3+0 |
F2 | 2+1+0 | 0+0+0 | 2+1+0 |
F3 | 3+0 | 0+3 | 3+0 |
L1 | 8E + 4NE em NT, 3E + 0 NE em Tv | 5E + 2NE em NT, 3E + 0 NE em Tv | 10E + 4NE em NT, 3E + 0 NE em Tv |
L2 | 11E+0NE em PR+Sinais | ... | ... |
L3 | 0F + 2I | ... | ... |
L4 | 1 +0+0 | ... | ... |
GIC5T1 (GIC5 sem produções unitárias e usando exBNF)
p1: PIs --> RESUMO Lst DETALHE Projs '.'
p2: Lst --> InvPs (';' InvPs)*
p3: InvPs --> id LstIds
p4: LstIds --> id (',' id)*
p5: Projs --> (Proj '.')+
p6: Proj --> id str FINANC Entidad num INIC num FIM num
p7: Entidad --> FCT
p8: | GRICES
p9: | ADI
GIC5T2 (GIC com a produção p10 modificada para ficra mais curta)
p1: PIs --> RESUMO Lst DETALHE Projs '.'
p2: Lst --> InvPs
p3: | Lst ';' InvPs
p4: InvPs --> SglInv LstIds
p5: SglInv --> id
p6: LstIds --> SglProj
p7: | SglProj ',' LstIds
p8: Projs --> Proj '.'
p9: | Projs Proj '.'
p10: Proj --> SglProj Desc Financiament Period
p11: Financiament --> FINANC Entidad Valor
p12: Period --> INIC Ano FIM Ano
p13: SglProj --> id
p14: Desc --> str
p15: Entidad --> FCT
p16: | GRICES
p17: | ADI
p18: Ano --> num
p19: Valor --> num
GIC5T3 (GIC5 permitindo incluir a lista de todos os Membros do projecto)
p1: PIs --> RESUMO Lst DETALHE Projs '.'
p2: Lst --> InvPs
p3: | Lst ';' InvPs
p4: InvPs --> SglInv LstIds
p5: SglInv --> id
p6: LstIds --> SglProj
p7: | SglProj ',' LstIds
p8: Projs --> Proj '.'
p9: | Projs Proj '.'
p10: Proj --> SglProj Desc FINANC Entidad Valor INIC Ano FIM Ano MEMBROS Membros
p11: Membros --> SglInv
p12: | SglInv ',' Membros
p13: SglProj --> id
p14: Desc --> str
p15: Entidad --> FCT
p16: | GRICES
p17: | ADI
p18: Ano --> num
p19: Valor --> num
8 Março de 2010
- Cálculo das métricas para a gramática do Exemplo 5:
| Projectos |
#T | 14 |
#NT | 12 |
#P | 17 |
#PU | 5 |
#R | 3 |
$RHS | 38/17=2.24 |
$ALT | 17/12=1.42 |
#Modulos | 1 |
Fan-in | |
Fan-out | |
#RD | 12+1=13 |
#TabLL1 | 12*14=168 |
F1 | 3+0 |
F2 | 2+1+0 |
F3 | 3+0 |
L1 | 8E + 4NE em NT, 3E + 0 NE em Tv |
L2 | 11E+0NE em PR+Sinais |
L3 | 0F + 2I |
L4 | 1 +0+0 |
1 Março de 2010
- Introdução às métricas de forma:
- Forma da recursividade (F1):
- Recursividade Directa: X -> α X ou X -> X α
- Recursividade Indirecta: X -> α Y β e Y -> γ X
- Recursividade Mista
- Tipo de recursividade (F2):
- Recursividade Esquerda: X -> X α
- Recursividade Direita: X -> α X
- Recursividade Direita-LL: X -> α Y e Y -> ε | α Y
- Recursividade Mista
- Notação (F3):
- Introdução às métricas lexicográficas
- Identificadores dos Terminais (T) e Não-Terminais (NT) esclarecedores (L1)
- Palavras-Peservadas (PR) e Sinais esclarecedores (L2)
- Identificadores + Literais da Linguagem Flexíveis (L3)
- Possibilidade de inserir comentários (L4)
- Comentários inline
- Comentários blocos
- Comentários mistos
- Cálculo de Métricas de Forma e Lexicográficas para estudo comparativo de gramáticas:
- métricas para a Gramática Black, GBla (EG -- Exemplo 1);
- métricas para a versão original (v0) da Gramática Biblioteca, GBib (EG -- Exemplo 2).
| Black | Biblioteca (v0) |
F1 | 0+0 | 2+0+0 |
F2 | 0+0+0 | 2+0+0 |
F3 | 0+3 | 2+0 |
L1 | NT: 8E(1) + 2NE(2), T: 2E + 0NE | NT: 19E + 1NE (DataDev), T: 3E + 0NE |
L2 | PR(3): 25E + 0NE, Sinais: 5E + 0NE | 12E + 0NE, Sinais: 6E + 0NE |
L3 | 2 | NA |
L4 | NA(4) | NA |
(1) Esclarecedores
(2) Não Esclarecedores
(3) Palavras-Reservadas
(4) Não aplicável
22 Fevereiro de 2010
- Cálculo de métricas para estudo comparativo de gramáticas:
- métricas para a versão original (v0) da Gramática Biblioteca (2ª coluna da Tabela da aula anterior).
- métricas para a versão v1 da Gramática Biblioteca, após remoção das produções unitárias.
- métricas para a versão v2 da Gramática Biblioteca, após alteração para gramática LL(1).
- métricas para a versão v3 da Gramática Biblioteca, após alteração para uso de notação ex-BNF.
- métricas para a versão v4 da Gramática Biblioteca, alterada de modo a permitir que cada livro tenha mais de um Autor.
- Conclusão: deixando de lado v4 que altera a Linguagem original, é interessante notar que a gramática menos clara (mais dificl de aprender e manter) é a v1, a qual conduz ao Reconhecedor menor e pt mais eficiente; quanto às outras três (v0, v2 e v3) são muito semelhantes, sendo a versão LL(1) a maior e tv por isso menos "ágil" e a versão ex-BNF um pouco menor e consequentemente mais fácil de usar. Curiosamente, a versão v4 estende a Linguagem original, mantendo uns indicadores de qualidade muito semelhantes aos das suas antecessoras (v0, v2 e v3).
| (v0) | (v1) | (v2) | (v3) | (v4) |
#T | 18+3=21 | 21 | 21 | 21 | 21 |
#NT | 20 | 11 | 22 | 20 | 21 |
#P | 28 | 19 | 30 | 26 | 30 |
#PU | 9 | 0 | 9 | 9 | 9 |
#R | 2 | 2 | 2 | 0 | 3 |
$RHS | 55/28=1.96 | 46/19 = 2.42 | 58/30 = 1.93 | 56/26=2.15 | 57/30=1,9 |
$ALT | 28/20=1.4 | 19/11 = 1.73 | 30/22 = 1.36 | 26/20=1.3 | 30/21=1.43 |
#Modulos | 1 | 1 | 1 | 1 | 1 |
#RD | 20+21=41 ou 20+1=21 | 11+1=12 | 22+1 | 20+1 | 21+1 |
#TabLL1 | (20+21)*21 ou 20*21=420 | 11*21 = 231 | 22*21=462 | 20*21=420 | 21*21=441 |
p0: Biblioteca --> Registos
p1: Registos --> Registo
p2: | Registos ',' Registo
p3: Registo --> '[' REGISTO Descricao EXISTENCIAS
Existencias ']'
p4: Descricao --> Referencia Tipo Titulo '(' Autores ')'
Editora Ano Catalogo
...........
p28: Autores --> Autor
p29: | Autores ',' Autor
p0: Biblioteca --> Registos
p1: Registos --> Registo (',' Registo)*
p2: Registo --> '[' REGISTO Descricao EXISTENCIAS
Existencias ']'
p3: Descricao --> Referencia Tipo Titulo '(' Autor ')'
Editora Ano Catalogo
p4: Referencia --> id
p5: Tipo --> LIVRO
p6: | CDROM
p7: | OUTRO
p8: Titulo --> string
p9: Autor --> string
p10: Editora --> string
p11: Ano --> num
p12: Catalogo --> BGUM
p13: | ALFA
p14: | OUTRO
p15: Existencias --> LOCAL Local '(' Estados ')'
p16: Local --> string
p17: Estados --> Estado (',' Estado)*
p18: Estado --> CodigoBarras Disponib
p19: CodigoBarras --> id
p20: Disponib --> ESTANTE
p21: | PERMANENTE
p22: | EMPRESTADO DataDev
p23: DataDev --> Ano '-' Mes '-' Dia
p24: Mes --> num
p25: Dia --> num
p0: Biblioteca --> Registos
p1: Registos --> Registo RegistosAux
p2: RegistosAux --> ',' Registo
p3: |
p4: Registo --> '[' REGISTO Descricao EXISTENCIAS
Existencias ']'
p5: Descricao --> Referencia Tipo Titulo '(' Autor ')'
Editora Ano Catalogo
p6: Referencia --> id
p7: Tipo --> LIVRO
p8: | CDROM
p9: | OUTRO
p10: Titulo --> string
p11: Autor --> string
p12: Editora --> string
p13: Ano --> num
p14: Catalogo --> BGUM
p15: | ALFA
p16: | OUTRO
p17: Existencias --> LOCAL Local '(' Estados ')'
p18: Local --> string
p19: Estados --> Estado EstadosAux
p20: EstadosAux --> ',' EstadosAux
p21: |
p22: Estado --> CodigoBarras Disponib
p23: CodigoBarras --> id
p24: Disponib --> ESTANTE
p25: | PERMANENTE
p26: | EMPRESTADO DataDev
p27: DataDev --> Ano '-' Mes '-' Dia
p28: Mes --> num
p29: Dia --> num
p0: Biblioteca --> Registos
p1: Registos --> Registo
p2: | Registos ',' Registo
p3: Registo --> '[' REGISTO Descricao EXISTENCIAS
Existencias ']'
p4: Descricao --> id Tipo string '(' string ')'
string num Catalogo
p5: Tipo --> LIVRO
p6: | CDROM
p7: | OUTRO
p8: Catalogo --> BGUM
p9: | ALFA
p10: | OUTRO
p11: Existencias --> LOCAL string '(' Estados ')'
p12: Estados --> Estado
p13: | Estados ',' Estado
p14: Estado --> id Disponib
p15: Disponib --> ESTANTE
p16: | PERMANENTE
p17: | EMPRESTADO DataDev
p18: DataDev --> num '-' num '-' num
25 Janeiro de 2010
- Discussão da relação das métricas obtidas com a qualidade da linguagem.
- Cálculo de métricas para estudo comparativo de gramáticas:
- métricas para a Gramática Black, GBla (EG -- Exemplo 1);
- métricas para a versão original (v0) da Gramática Biblioteca, GBib (EG -- Exemplo 2).
| Black | Biblioteca (v0) |
#T | 30+2=32 | 18+3=21 |
#NT | 10 | 20 |
#P | 25 | 28 |
#PU | 0 | 9 |
#R | 0 | 2 |
$RHS | 60/25=2.4 | 55/28=1.96 |
$ALT | 2.5 | 28/20=1.4 |
#Modulos | 1 | 1 |
#RD | 10+32=42 ou 10+1=11 | 20+21=41 ou 20+1=21 |
#TabLL1 | (10+32)*32=1344 ou 10*32=320 | (20+21)*21 ou 20*21=420 |
- Conclusão: verificou-se que as gramáticas são sensivelmente do mesmo tamanho (GBla com mais terminais, mas Gbib com mais não-terminais e produções), mas que GBla (com lados direitos mais longos, mais alternativas e com um grafo de dependências mais fechado) é mais complexa que a GBib, sendo esta ultima é mais clara/mais fácil de ler/manter (mais produções unitárias e GD mais simples). Em termos do Reconhecedor, o da segunda (GBib) é um pouco maior (devido a mais NTs e Prods).
18 Janeiro de 2010
- Continuação da definição de critérios para avaliar a qualidade das gramáticas: usabilidade (em termos de leitura, derivação de frases e manutenção); e eficiência (em termos reconhecedor/processor gerado, e geração).
- Critérios definidos em relação a uma Gramática Independente do Contexto (GIC):
- identificadores dos símbolos
- nº de símbolos (terminais #T + não terminais #NT)
- nº de produções (#P)
- notação (BNF/eBNF)
- recursividade (Esquerda/Direita, Directa/Indirecta)
- complexidade em termos de dependências entre símbolos
- modularidade
- Critérios definidos em relação a uma Gramática de Atributos (GA):
- identificadores dos símbolos
- nº de atributos (nº de regras de cálculo)
- complexidade dos atributos
- complexidade das acções semânticas
- nº, complexidade e localização das condições de contexto
- notação
- recursividade
- suporte em gramática concreta/gramática abstracta
- complexidade em termos de dependências entre símbolos
- Métricas para GIC:
- Tamanho: #T, #NT, #P, #PU, média do nº de símbolos no lado direito das produções ($RHSmed), nº médio de alternativas para cada símbolo ($Altmed), número de módulos (#mod), nº dependências entre símbolos usando o grafo de dependências (fan-in, fan-out), tamanho das tabelas de parsing LL(1) = ((N+T)*T), tamanhos das tabelas de parsing LR = (Q*T)+(Q*N), tamanho do recursivo descendente = (#N+#T)
- Forma:
- Lexicográficas:
11 Janeiro de 2010
- Discussão sobre técnicas de parsing com base nos relatórios apresentados pelos alunos. Revisão dos conceitos de First, Follow, Lookahead, Parsers Top-Down e Bottom-Up.
- Revisão dos critérios para aferir a Qualidade de Linguagens.
- Introdução aos critérios para aferir a Qualidade das Gramáticas.
- Uma gramática G tem 2 fins: Geradora de Linguagem; e Geradora de um Processador de Linguagem. Enquanto Geradora de Linguagem pretende-se que seja fácil de compreender, derivar e manter. Enquanto Geradora de um Processador pretende-se obter: eficiência do processador gerado; e eficiência do processo de geração.
4 Janeiro de 2010
- Discussão da relevância do ambiente de desenvolvimento (IDE) para a avaliação de uma Linguagem: embora não sendo considerado um critério de aferição de linguagens por não ser uma característica intrínseca e sim um factor externo complementar, reconheceu-se a sua importância neste estudo visto que influencia directamente a utilização da linguagem (um mau IDE não promove a utilização da linguagem e vice-versa). Foram, entretanto, identificadas as seguintes facetas que caracterizam a qualidade de um IDE:
- editor assistido (orientado pela sintaxe, ou com auto-complete, syntax highlight);
- editor assistido pela semântica (inteli-sense, snippets);
- code folding (Definição de Code Folding);
- compilador/interpretador (rapidez, nível de optimização, tratamento de erros);
- verificador sintáctico e semântico;
- debugger;
- gestor de projectos;
- controlador de versões;
- importador/integrador de bibliotecas (se possível, referenciador para bibliotecas);
- apresentador de dicas e sinópsis e leitor de documentação;
- possibilidade de configuração e extensibilidade das funcionalidades.
- Continuação da definição de critérios para aferir a Qualidade de Linguagens:
- CL8 --- Credibilidade/ Fiabilidade (Reliability): type checking, exception handling
| Aprendizagem | Escrita | Compreensão | Reconhecimento |
CL1 - Expressividade | + | + | + | x |
CL2 - Documentação | x | - | + | x/- |
CL3 - Unicidade | + | - | + | + |
CL4 - Consistência | + | + | + | x |
CL5 - Extensibilidade | - | + | - | - |
CL6 - Escalabilidade | x | = | = | = |
CL7 - Paradigma/Filosofia | impl | impl | impl | impl |
CL8 - Credibilidade/ Fiabilidade | - | + | + | - |
| Pascal | Basic | C | Perl | XML | Latex | Prolog | C++ | C# | Java | Haskell |
CL1-Expressividade | mB | S | mB | MB | MB | MB | S | S | MB | MB | MB |
CL2-Documentação | bás | bás- | evol | evol- | evol- | bás- | bás- | evol- | evol | evol | bás |
CL3-Unicidade | x | x | x | x | +/- | +/- | x | x | x | x | x |
CL4-Consistência | + | +/- | +/- | - | + | - | + | +/- | + | + | + |
CL5 - Extensibilidade | bás | bás- | bás+ | evol | NA | bás | evol | evol | evol | evol | evol |
CL6 - Escalabilidade | B | +/- | B | B? | NA | N | N | B | B | N | N |
CL7 - Paradigma/Filosofia | I | I | I | S | D | D | D/L | OO/I | OO/I | OO/I | D/F |
CL8 - Credibilidade/ Fiabilidade | B | R | S | S | NA | NA | R | B | MB | MB | B |
MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não, R - Reduzido
bás - básico, evol - evoluído, impl - implica
I - Imperativo, D - Declarativo, L - Lógico, F - Funcional, S - Scripting, OO - Orientado a Objectos
Extensbilidade:
1. Léxico: aliasing (associar um termo/palavra a outra palavra) --- Extensão ao nível do vocabulário
2. Sintáctico
3. Semântica: linguagem de objectos permite estender a semântica (o uso de bibliotecas contribui para a extensibilidade da linguagem).
14 Dezembro de 2009
- Continuação da definição de critérios para aferir a Qualidade de Linguagens:
- CL5 --- Extensibilidade
- CL7 --- Paradigma/Filosofia
| Aprendizagem | Escrita | Compreensão | Reconhecimento |
CL1 - Expressividade | + | + | + | x |
CL2 - Documentação | x | - | + | x/- |
CL3 - Unicidade | + | - | + | + |
CL4 - Consistência | + | + | + | x |
CL5 - Extensibilidade | - | + | - | - |
CL6 - Escalabilidade | x | = | = | = |
CL7 - Paradigma/Filosofia | impl | impl | impl | impl |
| Pascal | Basic | C | Perl | XML | Latex | Prolog | C++ | C# | Java | Haskell |
CL1-Expressividade | mB | S | mB | MB | MB | MB | S | S | MB | MB | MB |
CL2-Documentação | bás | bás- | evol | evol- | evol- | bás- | bás- | evol- | evol | evol | bás |
CL3-Unicidade | x | x | x | x | +/- | +/- | x | x | x | x | x |
CL4-Consistência | + | +/- | +/- | - | + | - | + | +/- | + | + | + |
CL5 - Extensibilidade | bás | bás- | bás+ | evol | NA | bás | evol | evol | evol | evol | evol |
CL6 - Escalabilidade | B | +/- | B | B? | NA | N | N | B | B | N | N |
CL7 - Paradigma/Filosofia | I | I | I | S | D | D | D/L | OO/I | OO/I | OO/I | D/F |
MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não
bás - básico, evol - evoluído, impl - implica
I - Imperativo, D - Declarativo, L - Lógico, F - Funcional, S - Scripting, OO - Orientado a Objectos
Extensbilidade:
1. Léxico: aliasing (associar um termo/palavra a outra palavra) --- Extensão ao nível do vocabulário
2. Sintáctico
3. Semântica: linguagem de objectos permite estender a semântica (o uso de bibliotecas contribui para a extensibilidade da linguagem).
07 Dezembro de 2009
- Aula ocupada com a apresentação, discussão e avaliação do Projecto Integrado (PI) -- 1ªfase.
30 Novembro de 2009
- Continuação da definição de critérios para aferir a Qualidade de Linguagens:
| Aprendizagem | Escrita | Compreensão | Reconhecimento |
CL1 - Expressividade | + | + | + | x |
CL2 - Documentação | x | - | + | x/- |
CL3 - Unicidade | + | - | + | + |
CL4 - Consistência | + | + | + | x |
| | | | |
CL6 - Escalabilidade | x | = | = | = |
| Pascal | Basic | C | Perl | XML | Latex | Prolog | C++ | C# | Java | Haskell |
CL1-Expressividade | mB | S | mB | MB | MB | MB | S | S | MB | MB | MB |
CL2-Documentação | bás | bás- | evol | evol- | evol- | bás- | bás- | evol- | evol | evol | bás |
CL3-Unicidade | x | x | x | x | +/- | +/- | x | x | x | x | x |
CL4-Consistência | + | +/- | +/- | - | + | - | + | +/- | + | + | + |
| | | | | | | | | | | |
CL6 - Escalabilidade | B | +/- | B | B? | NA | N | N | B | B | N | N |
MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não
bás - básico, evol - evoluído
23 Novembro de 2009
- Continuação da definição de critérios para aferir a Qualidade de Linguagens:
- CL2 --- Documentação:
- definição deste critério: comentários --- in-line, multi-line, DSL em comentário (Aumenta doc e produz manuais --- JavaDoc, MSDN, etc; aumenta robustez e produz provas --- VCGen); meta-informação obrigatória.
- CL3 --- Unicidade: forma única de escrita.
- CL4 --- Consistência
| Aprendizagem | Escrita | Compreensão | Reconhecimento |
CL1 - Expressividade | + | + | + | x |
CL2 - Documentação | x | - | + | x/- |
CL3 - Unicidade | + | - | + | + |
CL4 - Consistência | + | + | + | x |
| Pascal | Basic | C | Perl | XML | Latex | Prolog | C++ | C#/Java | Haskell |
CL1-Expressividade | mB | S | mB | MB | MB | MB | S | S | MB | MB |
CL2-Documentação | bás | bás- | evol | evol- | evol- | bás- | bás- | evol- | evol | bás |
CL3-Unicidade | x | x | x | x | +/- | +/- | x | x | x | x |
CL4-Consistência | + | +/- | +/- | - | + | - | + | +/- | + | + |
MB - Muito Bom, B - Bom, S - Satisfaz
bás - básico, evol - evoluído
16 Novembro de 2009
- Qualidade de gramáticas vs Qualidade de linguagens.
- Critérios para aferir a Qualidade das Linguagens:
- CL1 -- Expressividade:
- definição deste critério: facilidade (naturalidade, clareza) com que se exprime uma ideia usando os construtores da linguagem.
- impacto de CL1 nos quatro dimensões de avaliação: influencia positivamente a aprendizagem, escrita e compreensão sem ter grande impacto no processamento.
| Aprendizagem | Escrita | Compreensão | Reconhecimento |
CL1- Expressividade | + | + | + | x |
-
-
- Avaliação (comparativa) da expressividade das seguintes linguagens: Basic, Pascal, C, C#, Perl, Prolog, Haskell, XML, LaTeX; discussão da avaliação histórica e dos paradigmas subjacentes.
| Pascal | Basic | C | Perl | XML | Latex | Prolog | C++ | C# | Haskell |
CL1-Expressividade | mB | S | mB | MB | MB | MB | S | S | MB | MB |
MB - Muito Bom, B - Bom, S - Satisfaz
9 Novembro de 2009
- Continuação da discussão com os alunos sobre as pesquisas feitas relativas a métricas de gramáticas. Alunos de que apresentaram: Jorge Mendes, André Santos & Miguel Regedor, Márcio Coelho, Paulo Alexandre & Paulo Alexandr e André Rocha.
- Introdução ao conceito de qualidade de gramáticas vs qualidade de linguagens (critérios de avaliação e métricas).
- Definição de Qualidade de uma Linguagem: uma linguagem diz-se com qualidade se a sua legibilidade (em termos de facilidade na aprendizagem, escrita e compreensão) for grande sem degradar a eficiência do processamento.
- Critérios para as Linguagens -- Introdução: CL1 a CL6.
2 Novembro de 2009
- Discussão com os alunos sobre as pesquisas feitas sobre métricas de gramáticas. Alunos de que apresentaram: Jose Luis, Helder Silva, e Daniel Rocha.
26 Outubro de 2009
- Apresentação dos resultados encontrados na pesquisa sobre métricas de gramáticas.
- Revisão da utilização de entradas bibtex num ficheiro latex.
- Resolução do exercício 2, alínea f4.
- Introdução do princípio da Tradução Dirigida pela Semântica e diferenças em relação à Tradução Dirigida pela Sintaxe.
- Introdução ao conceito de Gramáticas de Atributos como tuplo (GIC, A, RC, CC, RT), onde A=Atributos, RC=Regras de Contexto, CC=Condições de Contexto, RT=Regras de Tradução.
- Exemplificação do uso de Gramáticas de Atributos (GA) com a gramática declarations.g
19 Outubro de 2009
- Discussão do duplo papel de uma Gramática, a propósito do Exercício 2 da aula anterior e das suas alíneas a) a c) (comparação com o Exercício 1):
- a gramática como especificação formal de uma linguagem (papel do utilizador final da linguagem e do engenheiro gramatical);
- a gramática como especificação formal de um programa, o processador/compilador da linguagem e o recurso a Geradores automáticos de Compiladores (papel do engenheiro gramatical).
- Introdução à noção e relevância do tema Qualidade de Gramáticas (em ambas as vertentes acima identificadas) e da necessidade imperiosa de se definirem Métricas Gramaticais para se poder discutir a qualidade com objectividade.
- Revisão dos conceitos de Parsing Top-Down (Recursivo-Descendente, RD, e LL(1)) e de Parsing Bottom-Up (LR); funções e tabelas de parsing e autómato LR(0) -- resolução das alíneas d) e e) do Exercício 2.
12 Outubro de 2009
- Introdução da notação AnTLR e comparação com a escrita de gramáticas em Lex/Yacc.
- Escrita em notação AnTLR de uma Gramática para uma linguagem que:
- aceite uma Lista de Números;
- gere o respectivo Parser com o AnTLR;
- teste o parser com o Debugger visual do AnTLRWorks;
- inclua Acções Semânticas e Atributos para calcular a Soma dos números na lista e Comprimento da Lista.
- Discussão das diferenças entre o formato BNF e EBNF e comparação das respectivas árvores de derivação.
- Discussão das diferenças entre Recursividade à Esquerda e Recursividade à Direita.
Gramática Recursiva não-LL(1) (BNF-puro) |
Lista --> "[" Nums "]"
Nums --> int
| int',' Nums
Gramática Iterativa (BNF-extendido) --- com resolução em ANTLR |
lista : '[' nums ']' {
System.out.println("Soma: " + $nums.soma +
"\nContador: " + $nums.conta);
}
;
nums returns [int soma, int conta=0]
: a = INT {
$soma = Integer.parseInt($a.text);
$conta++;
}
(',' b = INT { $soma += Integer.parseInt($b.text);
$conta++;
}
)*
;
INT : ('+' | '-')? ('0'..'9')+
;
WS : (' ' | '\t' | '\n' | '\r') { channel=HIDDEN; };
28 de Setembro de 2009
- 1. Apresentação da UCE30-EL e em particular do Módulo de EG:
- Apresentação da Equipe Docente, dos Objectivos e do modo de Funcionamento e Avaliação;
- Introdução e Motivação para a área de Processamento de Linguagens e para o desenvolvimento baseado em Gramáticas e em Geradores de Compiladores.
- 2. Revisão do conceito de Linguagem e sua relação com Gramática:
- Apresentação dos critérios a observar quando se faz o design de uma Linguagem:
- Satisfação dos Requisitos pedidos no enunciado
- Satisfação das Restrições explicitadas no enunciado
- Procura de Legibilidade
- Procura de Simplicidade na utilização para escrever frases.
- Resolução do Exemplo1: desenho de uma Linguagem
- 3. Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
- Resolução do Exemplo2 (inicio, discussão do enunciado): leitura e análise de uma Gramática
|
|
 Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors. Ideas, requests, problems regarding TWiki? Send feedback
|
|