apresentação do powerpointarieldias.com/material/2018-1/plp/aula2.pdfconjuntos de regras: regras...

13
15/03/2018 1 Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Conjunto de regras que definem a forma da linguagem; Como as sentenças podem ser formadas como sequências de componentes básicos – palavras; A sintaxe não revela nada sobre o significado da sentença; Exemplo: Em C, palavras chaves como while, do, for, if, são palavras da linguagem; Palavras não são elementares, elas são construídas com caracteres que pertencem a um alfabeto; Assim, a sintaxe de uma linguagem é definida por dois conjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - www.arieldias.com

Upload: haquynh

Post on 03-Dec-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

1

Professor Ariel da Silva DiasAspectos sintáticos e semânticos básicos de

linguagens de programação

Conjunto de regras que definem a forma da linguagem;

Como as sentenças podem ser formadas como sequências de componentes básicos – palavras;

A sintaxe não revela nada sobre o significado da sentença;

Exemplo:◦ Em C, palavras chaves como while, do, for, if, são palavras da

linguagem;

Palavras não são elementares, elas são construídas com caracteres que pertencem a um alfabeto;

Assim, a sintaxe de uma linguagem é definida por dois conjuntos de regras: regras léxicas e regras sintáticas.

Professor Ariel da Silva Dias - www.arieldias.com

Page 2: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

2

Regras Léxicas◦ Especificam o conjunto de caracteres que constituem o

alfabeto da linguagem, bem como a maneira que eles podem ser combinados;

◦ Exemplo

Pascal: letras maiúsculas e minúsculas são idênticas;

C e ADA: letras maiúsculas e minúsculas são diferenciadas;

Pascal: sinal de diferente <>

C: sinal de diferente !=

ADA: sinal de diferente /=:

Professor Ariel da Silva Dias - www.arieldias.com

Regras Sintáticas◦ Especificam as sequências de símbolos que constituem

estruturas sintáticas válidas;

◦ Estas regras permitem o reconhecimento de expressões e comandos;

◦ Exemplo:

Pascal: atribuição a:=b;

C: atribuição a=b;

Professor Ariel da Silva Dias - www.arieldias.com

Page 3: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

3

Não é possível enumerar a sintaxe de todos os programas das mais diferentes linguagens;

É necessário uma maneira de definir um conjunto infinito usando uma descrição finita:◦ A sintaxe de uma linguagem é definida através de uma

gramática;

◦ Gramática: conjunto de regras que definem todos os construtores que podem ser aceitos na linguagem.

Professor Ariel da Silva Dias - www.arieldias.com

Fortran foi definido através da especificação de algumas regras em inglês;

Algol 60 foi definido através de uma gramática livre de contexto desenvolvida por Jonh Backus;◦ Essa gramática ficou conhecida como BNF (Backus-Naur

Form);

BNF foi utilizada posteriormente na definição de várias linguagens como C, Pascal e Ada;

BNF é uma metalinguagem pois consiste numa linguagem para descrição de outras linguagens.

Professor Ariel da Silva Dias - www.arieldias.com

Page 4: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

4

BNF◦ Sentenças simples consistem de uma frase nominal e de

uma frase verbal seguida de um ponto, da seguinte maneira:

<sentence> ::= <frase_nominal><frase_verbal>.

◦ Deve-se saber descrever a estrutura de uma frase nominal e de uma frase verbal:

<frase_nominal> ::= <artigo><substantivo>

<artigo> ::= um | a

<substantivo> ::= garota | cachorro

<frase_verbal> ::= <verbo> <frase_nominal>

<verbo> ::= viu | abraça

Professor Ariel da Silva Dias - www.arieldias.com

Cada regra gramatical apresentada consiste de uma string colocada entre “<“ e “>”, esta string é o nome da estrutura que está sendo descrita;

O símbolo ::= pode ser lido como “consiste de” ou “é o mesmo que”;

Após o símbolo ::=, temos uma sequência de outros nomes e símbolos;

Professor Ariel da Silva Dias - www.arieldias.com

Page 5: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

5

Construção de uma sentença legal:◦ Inicia-se com o símbolo <sentença> e prossegue-se

trocando o lado esquerdo por alternativas do lado direito nas regras;

◦ Este processo criará uma derivação na linguagem;

◦ Desta forma, podemos construir a sentença: “A garota viu um cachorro”;

Professor Ariel da Silva Dias - www.arieldias.com

Montando a derivação da sentença: “a garota viu um cachorro”◦ <sentença> <frase_nominal><frase_verbal>.

◦ <artigo><substantivo><frase_verbal>.

◦ a <substantivo><frase_verbal>.

◦ a garota <frase_verbal>.

◦ a garota <verbo><frase_nominal>.

◦ a garota viu <frase_nominal>.

◦ a garota viu <artigo><substantivo>.

◦ a garota viu um <substantivo>.

◦ a garota viu um cachorro.

Pode-se começar com a sentença “a garota viu um cachorro”, e voltar até <sentença> para provar que é uma sentença válida da linguagem.

Professor Ariel da Silva Dias - www.arieldias.com

Page 6: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

6

Para descrever uma linguagem é necessário uma série de regras gramaticais;

As regras são formadas por uma única estrutura do lado esquerdo seguida do metasímbolo “::=“ e por uma sequência de itens do lado direito (símbolos ou estruturas);

Estruturas entre <> são chamadas de não terminais;

Símbolos como garota e cachorro são chamadas de terminais;

As regras gramaticais são as produções.

Professor Ariel da Silva Dias - www.arieldias.com

Exemplo de uma gramática para expressões aritméticas de adição e multiplicação:◦ <exp>::= <exp>+<exp> | <exp>*<exp> | (exp) | <num>

◦ <num> ::= <num><digito> | <digito>

◦ <digito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Professor Ariel da Silva Dias - www.arieldias.com

Page 7: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

7

Extensão da BNF EBNF (Extend BNF);

Definição EBNF para uma linguagem de programação simples

Definição EBNF para uma calculadora

Definição de Sintaxe para uma linguagem de programação simples

Professor Ariel da Silva Dias - www.arieldias.com

Com tudo isso, é possível concluir que a descrição sintática de uma linguagem:◦ Ajuda o programador a saber como escrever um programa

sintaticamente correto;

◦ Pode ser usada para determinar se um programa está

sintaticamente correto este é exatamente o trabalho do compilador!

Professor Ariel da Silva Dias - www.arieldias.com

Page 8: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

8

Observe os dois trechos de código a seguir, sendo o código a. em C e o código b. em Pascal

a. b.

while(x!=y) while x<>y do

{ begin... ...

} end

Ambas possuem a mesma estrutura conceitual, porém, diferem na aparência léxica;

Quando duas construções diferem apenas no nível léxico, se diz que elas seguem a mesma sintaxe abstrata e diferem na sintaxe contreta.

Professor Ariel da Silva Dias - www.arieldias.com

Observe os dois trechos de código a seguir, sendo o código a. em C e o código b. em Pascal

a. b.

while(x!=y) while x<>y do

{ begin... ...

} end

Ambas possuem a mesma estrutura conceitual, porém, diferem na aparência léxica;

Quando duas construções diferem apenas no nível léxico, se diz que elas seguem a mesma sintaxe abstrata e diferem na sintaxe contreta.

Professor Ariel da Silva Dias - www.arieldias.com

Page 9: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

9

A semântica define o significado dos programas sintaticamente corretos;

Por exemplo, em C, a instrução

if(a>b)

max = a;

else

max = b;

Diz que a expressão a>b deve ser avaliada e, dependendo do retorno (true ou false), um dos dois comandos de atribuição será executado.

Professor Ariel da Silva Dias - www.arieldias.com

Regras sintáticas: mostram como formar o comando;

Regras semânticas: mostram qual é o efeito do comando;

Erros semânticos:◦ Acesso a uma posição inválida de um vetor;

◦ Atribuição de variáveis e tipos/valores diferentes (Ex.:inteiro p/ string);

◦ Utilização de variável fora do escopo.

Professor Ariel da Silva Dias - www.arieldias.com

Page 10: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

10

Conceitos semânticos básicos de uma LP◦ Variáveis: questões semânticas associadas a declaração

(escopo, tipo e tempo de vida);

◦ Valores e Referência: se o valor associado a variável denota localização na memória ou conteúdo localizado na memória;

◦ Expressões: possuem regras para serem escritas envolvendo os tipos de expressões permitidas;

Professor Ariel da Silva Dias - www.arieldias.com

Abstração

◦ Processo de identificar apenas as qualidades ou propriedades relevantes do fenômeno que se quer modelar;

◦ As LP são as ferramentas com as quais os programadores podem implementar os modelos abstratos;

◦ Por outro lado, as próprias LP são abstrações do processador subjacente;

Professor Ariel da Silva Dias - www.arieldias.com

Page 11: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

11

Abstração

◦ Sugere a distinção que deve ser feita entre “o que” o programa faz e “como” ele é implementado”;

Quando um procedimento é chamado , pode-se concentrar apenas no que ele faz;

Quando se está escrevendo o procedimento deve-se concentrar em como implementá-lo;

◦ As primeiras abstrações foram o uso de mnemônicos em assembly;

Professor Ariel da Silva Dias - www.arieldias.com

Programas trabalham com entidades◦ Entidades: Variáveis, rotinas e comandos;

◦ As entidades dos programas possuem propriedades chamadas atributos;

◦ Os valores dos atributos devem ser definidos antes de sua utilização.

Professor Ariel da Silva Dias - www.arieldias.com

Page 12: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

12

A definição do valor de um atributo é conhecida como amarração ou binding;

Professor Ariel da Silva Dias - www.arieldias.com

Amarração estática: ◦ A amarração é estabelecida antes do tempo de execução e

não pode ser alterada depois;

◦ Exemplo: um conjunto de valores é amarrado ao tipo inteiro no tempo de implementação da linguagem, assim, a definição da linguagem específica que o tipo inteiro deve ser suportado e a implementação da linguagem amarra-o à representação da memória.

Professor Ariel da Silva Dias - www.arieldias.com

Page 13: Apresentação do PowerPointarieldias.com/material/2018-1/PLP/Aula2.pdfconjuntos de regras: regras léxicas e regras sintáticas. Professor Ariel da Silva Dias - 15/03/2018 2 Regras

15/03/2018

13

Amarração dinâmica: ◦ A amarração é estabelecida em tempo de execução.

◦ Exemplo: as variáveis são amarradas a um valor em tempo de execução;

Professor Ariel da Silva Dias - www.arieldias.com

SEBESTA, Robert W. Conceitos de linguagens deprogramação. 9ª ed. Porto Alegre: Bookman, 2011.792 p. ISBN 978-85-7780-791-8.

Notas de aula – Professora Isabel Harb Manssour

Professor Ariel da Silva Dias - www.arieldias.com