Definição de Linguagem, Sintaxe Formal e Semântica Informal
Por: Elaine Sousa • 8/3/2020 • Trabalho acadêmico • 8.249 Palavras (33 Páginas) • 208 Visualizações
Definição de Linguagem, Sintaxe Formal e Semântica Informal
Breno Cardoso Elaine Lima João Pinto Viviane Pinheiro
Universidade Federal do Rio Grande do Norte
Centro de Ciências Exatas e da Terra
Departamento de Informática e Matemática Aplicada
Agosto, 2015
Este documento é o primeiro de uma série de outros que formarão uma proposta de linguagem de programação e seu compilador. Faz parte do projeto da disciplina de Compiladores – 2015.2, ministrada pelo prof. Umberto Souza da Costa, nesta instituição. Define-se, neste momento, precisamente a linguagem a ser implementada (sintaxe formal e semântica informal), incluindo a primeira versão do seu manual e exemplos de programas.
- Introdução
A linguagem de programação proposta será uma linguagem direcionada para aplicações cientificas, especificamente matemáticas. Ela receberá influências das linguagens Fortran e MATLAB, dessa forma a nomeamos FORMAT. Segundo Robert Sebesta em seu livro Conceitos de Linguagens de Programação, aplicações cientificas têm estruturas de dados relativamente simples e exigem alto processamento de computações aritméticas de ponto flutuante. Ainda segundo ele, as estruturas de dados mais comuns nesses tipos de linguagem são os vetores e matrizes; as estruturas de controle mais comuns são os laços e as selecões. Portanto ao endereçar esse tipo de ramo de aplicação, a linguagem FORMAT irá priorizar a manipulação de matrizes e conjuntos. Estes, importantes no desenvolvimento de aplicações matemáticas.
Fortran refere-se a uma família de linguagens de programação conhecida globalmente, desenvolvida a partir da década de 1950 e usada até hoje. O seu nome é um acrônimo da expressão "IBM Mathematical FORmula TRANslation System". Antes de sua criação, todas as operações de ponto flutuante eram simuladas em software, processo este que consumia muito tempo. Com a inclusão de hardware de ponto flutuante através do IBM 704 em 1954, e a criação da primeira linguagem de alto nível compilada iniciava-se uma nova era. Ela mudou drasticamente a maneira como os computadores são usados. Todas as linguagens de programação subsequentes devem algo a ela. Como referência estamos adotando a versão Fortran95.
MATLAB (MATrix LABoratory) é uma linguagem de programação de quarta geração, proprietária, desenvolvida pela MathWorks, destinada principalmente para computação numérica. Ela foi criada no fim dos anos 70 e encontrou forte uso no âmbito da comunidade da matemática aplicada. Seus comandos são muito próximos da forma que escrevemos expressões algébricas.
Temos a intenção de selecionar características de ambas as linguagens citadas de forma a agregar valor a linguagem desenvolvida. Por MATLAB ser proprietária, muitas informações não são facilmente encontradas, diferentemente de Fortran. A seguir listamos as convenções léxicas da linguagem FORMAT, incluindo uma descrição dos marcadores presentes. Posteriormente, apresentamos uma descrição em BNF de cada construção sintática juntamente da semântica associada. Logo em seguida, teremos três exemplos de programa, a saber merge sort, quicksort e insertion sort.
- Convenções lexicas
Um programa FORMAT é lido por um parser. E a sua entrada é um fluxo de tokens, gerado pelo analisador léxico. Esta seção descreve as convenções léxicas que permite o analisador léxico quebrar o programa-fonte em tokens.
- Tokens
Em um programa de código FORMAT, o elemento básico reconhecido pelo compilador é o "token". Um token é o texto do programa-fonte que o compilador não decompõem em elementos menores. As palavras-chave, identificadores, constantes, literais, operadores e caracteres de pontuação descritos nesta seção são exemplos de tokens.
- Comentários
Comentário é uma sequência de caracteres que começa com um caractere especial e é ignorado pelo compilador. Os comentários normalmente podem ser de dois tipos: de linha ou de bloco, onde várias linhas fazem parte de um único comentário. Este último tipo é estranho ao Fortran. Nele há somente o caractere “!” que caracteriza o primeiro tipo de comentário. No MATLAB há os dois tipos; o primeiro utilizando o caractere “%” e o segundo “{%” e “%}”. Um comentário pode incluir qualquer combinação de caracteres do conjunto de caracteres representável, excluindo o caractere de nova linha (no primeiro caso) e o delimitador "fim de comentário" (no segundo caso). Comentários podem aparecer em qualquer lugar onde um caractere de espaço em branco é permitido. O compilador ignora os caracteres presentes no comentário.
A linguagem FORMAT adota com caractere especial para comentário o “%%” e não apresenta comentários de bloco. Isso para simplificar o desenvolvimento da linguagem. Apesar de ser influenciada por MATLAB nesse momento, a alteração do caractere “%” para “%%” é para não se perder a possibilidade de utilizar um único caractere “%” em outros momentos.
Este exemplo é um comentário aceito pelo compilador FORMAT:
%% Contador atualizado pelos iteradores secundários
count <- i + j; %% i -- mais externo; j -- mais interno.
- Palavras-chave
Palavras-chave são palavras que têm significado especial para o compilador. São reservadas e não podem ser utilizadas como identificadores comuns. Elas devem ser digitadas exatamente como estão escritas aqui:
int | real | complex | single | double |
string | enum | struct | set_of | matrix_of |
end_struct | const | ref | if | else |
for | while | switch | case | break |
other | end_if | end_for | end_while | end_switch |
false | true | procedure | function | return |
- Identificadores
Identificadores são os nomes que se fornece para as variáveis, tipos, funções e rótulos em um programa. Nomes de identificador deve diferir em ortografia e caixa de quaisquer palavras-chave. Não se pode usar palavras-chave como identificadores; eles são reservados para uso especial. Se cria um identificador, especificando-o na declaração de uma variável, tipo ou função. O identificador deve seguir a seguinte regra na sua formação:
...