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
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
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
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
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
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
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
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
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
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
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
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
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
Top Related