Programa fonte token padrões lexema Tokens

Tamanho: px
Começar a partir da página:

Download "Programa fonte token padrões lexema Tokens"

Transcrição

1 Análise Léxica Analisador Léxico Primeira fase de um compilador. Objetivo: ler os caracteres de entrada e produzir como saída uma seqüência de tokens que o parser vai usar para análise sintática. Programa fonte analisador léxico token pede próximo token tabela de símbolos parser 1 2 Construindo um Analisador Léxico Outras Possíveis Tarefas do Analisador Léxico Especificar tokens e lexemas da linguagem. Implementar (ou gerar através de ferramenta) o analisador a partir da especificação. Tratamento de espaços em branco e comentários. Tratamento de mensagens de erro (localização / impressão). 3 4 Por que usar um Analisador Léxico? Tokens, Padrões e Lexemas Design mais simples misturar análise léxica com sintática torna o parser bem mais complicado. Eficiência separação possibilita construir processadores léxicos e sintáticos mais eficientes. Portabilidade variações de dispositivos podem ficar restritas ao analisador léxico. Existem conjuntos de strings na entrada que geram o mesmo token. Elas são descritas por padrões associados ao token. O padrão casa cada string do conjunto. Um lexema é uma seqüência de caracteres do programa fonte que casa com um padrão de um token. Tokens são símbolos terminais da linguagem

2 Tokens, Padrões e Lexemas Tokens normalmente são palavras-chave, operadores, identificadores, constantes, strings literais e símbolos de pontuação, como parenteses e vírgulas. Padrões normalmente são especificados por expressões regulares. Tokens, Padrões e Lexemas TOKEN LEXEMAS DESCRIÇÃO const const const if if if relação <, <=, =, < >, > < ou <= ou id pi, count, D2 Letra seguida de letras e/ou dígitos num , 0, 6.02E23 Constante numérica literal pequeno exemplo Quaisquer caracteres entre exceto aspa 7 8 Dificuldades na Implementação de um Analisador Léxico Linguagens que requerem determinados construtores em posições (colunas) específicas da linha de entrada (e.g. Fortran). Tratamento de espaços em branco. Ausência de palavras reservadas. Dificuldades - Exemplos Fortran: DO 5 I = 1.25 DO 5 I = 1,25 PL/I: IF THEN THEN THEN = ELSE; ELSE ELSE = THEN; 9 10 Atributos de um Token Ao reconhecer um token num é relevante saber se seu valor é zero ou um, por exemplo. Geralmente associado a um token existe um atributo. Uso da tabela de símbolos para guardar informações auxiliares sobre tokens. Atributos de um Token - Exemplo E = M * C ** 2 <id, apontador p/ posição de E na tabela de símbolos> <atrib_op,> <id, apontador p/ posição de M na tabela de símbolos> <mult_op,> <id, apontador p/ posição de C na tabela de símbolos> <exp_op,> <num, valor 2>

3 Erros de Análise Léxica Relativamente raros. fi(a == f(x)) Geralmente o analisador tenta se recuperar do erro, ignorando caracteres modalidade pânico. remover um caracter estranho inserir um caracter ausente substituir um caracter incorreto por um correto transpor dois caracteres adjacentes. Opções de Implementação de um Analisador Léxico Uso de um gerador de analisadores léxicos, como lex ou flex, que produzem um analisador léxico a partir de uma especificação em expressões regulares. Escrever o analisador em uma linguagem de programação convencional, usando as facilidades de E/S da linguagem para ler a entrada. Escrever o analisador léxico em assembly, gerenciando explicitamente a leitura. Obs: Uso de bufferização da entrada é importante para a eficiência de um analisador léxico Bufferização da Entrada Bufferização da Entrada Uso de sentinelas. Função: reduzir a sobrecarga imposta no processamento de um caractere. Uso de um buffer dividido em duas metades, com N caracteres cada uma. Leitura de N caracteres de entrada através de um único comando. : : : E : : = : M : * : eof C : * : * : 2 : eof : : : : eof apontador_adiante ++; início_de_lexema se apontador_adiante == eof se apontador_adiante == fim da 1 a metade recarregar 2 a metade; apontador_adiante ++; senão se apontador_adiante == fim da 2 a metade recarregar 1a metade; mover apontador_adiante p/ início 1 a metade; senão terminar a análise léxica; 15 apontador_adiante 16 Especificação dos Tokens Expressões regulares notação importante para especificar padrões. Baseado na Teoria das Linguagens: alfabetos, cadeias e linguagens Operações sobre linguagens: união, concatenação e fechamento Exemplo: seja L o conjunto (de letras) {A,B,,Z,a,b,,z e D o conjunto (de dígitos) {0,1,,9. Operadores sobre Linguagens OPERAÇÃO DEFINIÇÃO união de L e M, L M = {s s L escrita L M ou s M concatenação de L e M, LM = { st s L e escrita LM t M fechamento Kleene de L, L* = i = 0, L i escrito L* fechamento positivo de L, L + = i = 1, L i escrito L

4 Operações sobre Linguagens - Exemplo L D conjunto composto de letras e dígitos. LD conjunto de strings compostas de letras seguidas de dígitos. L 4 conjunto de todas as strings com 4 letras. L* conjunto de todas as strings de letras, inclusive a string vazia. D + conjunto de strings de um ou mais dígitos. L(L D)*? Propriedades Algébricas é comutativa e associativa concatenação é associativa concatenação se distribui sobre é o elemento identidade da concatenação * é idempotente Expressões Regulares Expressões Regulares O operador unário * possui a maior precedência e é associativo à esquerda. A concatenação tem a segunda maior precedência e é associativo à esquerda. possui a menor precedência e é associativo à esquerda. (a) ((b)*(c)) a b*c Permitem a definição de linguagens a partir de definições de expressões regulares mais simples. Exemplos: Identificadores em C: letra (letra dígito) * a b (a b) (a b) a* (a b)* a a*b Expressões Regulares Definição de Linguagem Regular Autômato Finito descreve uma linguagem. ER é uma formalização algébrica de um AF. Linguagem descrita por uma ER G Linguagem Regular: L(G). Comandos que pesquisam palavras (grep) padrão definido por uma ER A constante é uma expressão regular. L( )={ Qualquer símbolo a é uma ER. L(a)={a Uma variável L representa uma Linguagem Regular

5 Definição de Linguagem Regular Se E e F são ER s então E F é uma ER. L(E F) = L(E) L(F) Se E e F são ER s então EF é uma ER. L(EF)=L(E)L(F) Se E é uma ER então E* é uma ER. L(E*)=(L(E))* Se E é uma ER então (E) é uma ER. L((E))=L(E) Exemplos (0 1) * (0 1) * (0 11) 0 * (0 * 10 * 10 * 10 * ) * palavras que contêm 001. palavras com pelo menos um par de 0 s consecutivos. palavras de comprimento par, com 0 s nas posições ímpares ER s e Autômatos Finitos Os AF definem Linguagens. Equivalência entre AFND e AFD. ER definem Linguagens Regulares. Geradores de Analisadores Léxicos (Lex ou Flex) constroem AFD s a partir de definições regulares. ER s e Autômatos Finitos Equivalência entre ER s e AF s: ER s e Autômatos Finitos L( ) = { ER s e Autômatos Finitos L(R S) = L(R) L(S) L(a) = {a L(RS) = L(R)L(S)

6 ER s e Autômatos Finitos L(R * ) = (L(R)) * Exemplo: R = (1 01) * (0 ) E = (a b) * abb Definições Regulares Nomeia expressões regulares. Definição regular é uma seqüência de definições: d 1 r 1 d 2 r 2... d n r n d i é um nome distinto e r i, uma expressão de símbolos em Σ {d 1,d 2,...,d i Exemplo - Pascal letra A B Z a b z dígito0 1 9 idletra (letra dígito)* dígitosdígito dígito* fração_opc. dígitos expoente_opc(e (+ - ) dígitos) num dígitos fração_opc expoente_opc Simplificações Notacionais + uma ou mais instâncias. r+ rr*? zero ou uma instância. r? r [ ] classes de caracteres. Ex: [abc] a b c [a-z] a b z [A-Za-z][A-Za-z0-9]* Simplificações Notacionais Conjuntos Não-Regulares dígitos dígito dígito* fração_opc. dígitos expoente_opc (E (+ - ) dígitos) num dígitos fração_opc expoente_opc r+ rr* r? r dígitosdígito + fração_opc (. dígitos)? expoente_opc (E (+ -)? dígitos)? num dígitos fração_opc expoente_opc Impossibilidade de algumas linguagens serem descritas por qualquer expressão regular. Expressões regulares não podem ser usadas para descrever parênteses balanceados ou construções aninhadas

7 Reconhecimento de Tokens Gerar diagramas de transição e depois implementar uma máquina de estados. Implementar autômatos finitos determinísticos e nãodeterminísticos. Usar uma linguagem gerada pela seguinte gramática: cmd if expr then cmd if expr then cmd else cmd expr termo termo termo termo id num Reconhecimento de Tokens Definições regulares: if if then then else else < <= = < > > >= id letra(letra dígito)* num dígito + (.dígito + )?(E(+ -)?dígito + )? delim branco tabulação avanço de linha ws delim Reconhecimento de Tokens EXPRESSÃO REGULAR ws if then else id num < <= = < > > >= TOKEN if then else id num VALOR DE ATRIBUTO apontador para entrada da tabela apontador para entrada da tabela LT LE EQ NE GT GE Diagramas de Transições Passo intermediário na geração de um analisador léxico. Delineiam ações quando um analisador léxico é chamado pelo parser. Assumimos que os próximos diagramas de transições sejam determinísticos. estado de partida rótulo 1 rótulo Diagramas de Transições Para operadores relacionais: Diagramas de Transições Para identificadores e palavras-chave, e para espaços:

8 Diagramas de Transições Para números sem sinal em Pascal: Código C - Próximo Estado de Partida Código C do Analisador Léxico token próximo_token() { while(1) { switch(estado) { case 0: c = next_char(); if(c == c == \t c == \n ) { estado = 0; inicio_de_lexema++; else if(c == < ) estado = 1; else if(c == = ) estado = 5; else if(c == > ) estado = 6; else estado = falhar(); break;... /* inserir código para casos 1-8 aqui */ Código C do Analisador Léxico case 9: c = next_char(); if(isletter(c)) estado = 10; else estado = falhar(); break; case 10: c = next_char(); if(isletter(c)) estado = 10; else if(isdigit(c) estado = 10; else estado = 11; break; case 11: retrair(1); instalar_id(); return(obter_token());... /* inserir casos aqui */ Código C do Analisador Léxico Ferramenta Lex case 25: c = next_char(); if(isdigit(c)) estado = 26; else estado = falhar(); break; case 26: c = next_char(); if(isdigit(c)) estado = 26; else estado = falhar(); break; case 27: retrair(1); instalar_num(); return(num); Ferramenta Lex Compilador Lex. Especificação de entrada Linguagem Lex. Programa gerado representação tabular de um diagrama de transições. Ações associadas às expressões regulares trechos de códigos em C

9 Linguagem Lex Linguagem (e compilador) para especificar analisadores léxicos. Criando um analisador léxico com Lex: programa fonte Lex lex.l lexyy.c fluxo de caracteres de entrada Compilador Lex Compilador C a.out lexyy.c a.out seqüência de tokens Especificações Lex Formato: declarações variáveis, constantes, definições regulares regras de tradução expressões regulares e ações em C procedimentos auxiliares Funcionamento do Lex ativado leitura da entrada um caractere por vez encontra o mais longo prefixo reconhecido por uma das expressões regulares executa a ação correspondente retorna o token apropriado. Figurações Importantes do Lex Declaração de constantes e variáveis (1 a seção) são envolvidas por chaves especiais (%{ e %). Procedimentos auxiliares (3 a seção) também são copiados diretamente no analisador léxico lexyy.c. Metassímbolos em Lex: ( )? \ Expressões Regulares em Lex Um Programa Lex. a. [a-z$] [abj-oz] [^aa] [A-Z][A-Z0-9]* [+-]?[0-9]+ a{3,5 [^A-Z] %{ int num_lines = 0, num_chars = 0; % \n ++num_lines; ++num_chars;. ++num_chars; main() { yylex(); printf( linhas = %d,caracteres = %d\n, num_lines, num_chars); int yywrap() { return(1);

10 Um Outro Programa Lex Programa Lex - Analex {id printf( Identificador: %s\n, yytext); { [^\n]* /* nada */ %{ /* definição de constantes LT,LE,EQ,NE,. printf( Caractere desconhecido: %s\n, GT,GE,IF,THEN,ELSE,ID,NUMERO,RELOP */ yytext); % /* definições regulares */ void main(int argc, char *argv[]){ delim [ \t\n] ++argv, --argc; ws {delim+ if (argc > 0) letra [A-Za-z] yyin = fopen(argv[0],"r"); else digito [0-9] yyin = stdin; id {letra({letra {digito)* yylex(); numero {digito+(\.{digito+)? (E[+\-]?{digito+)? int yywrap(){ return(1); Programa Lex - Analex {ws {/* nenhuma ação, nenhum ret. */ if {return(if); then {return(then); else {return(else); {id {yylval = instalar_id(); return(id); {numero {yylval = instalar_num(); return(numero); "<" {yylval = LT; return(relop); "<=" {yylval = LE; return(relop); "=" {yylval = EQ; return(relop); "<>" {yylval = NE; return(relop); Programa Lex - Analex ">" {yylval = GT; return(relop); ">=" {yylval = GE; return(relop); int instalar_id(){ /* Copia lexema para a tabela de símbolos. Primeiro caracter do lexema é apontado pela variável yytext e o comprimento é definido pela variável yyleng. */ int instalar_num() {

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador Estrutura de um compilador programa fonte Compiladores Análise lexical () Expressões Regulares analisador léxico analisador sintático analisador semântico análise gerador de código intermediário otimizador

Leia mais

COMPILADORES. Análise léxica. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

COMPILADORES. Análise léxica. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise léxica Parte 02 Prof. geovanegriesang@unisc.br Reconhecimento de tokens Na aula anterior, padrões foram expressados

Leia mais

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de

Leia mais

Lex Adaptação da obra original de Tom Niemann

Lex Adaptação da obra original de Tom Niemann LEX Lex Adaptação da obra original de Tom Niemann Durante a primeira fase, o compilador lê a entrada e converte as strings na origem para os tokens. Com expressões regulares, podemos especificar padrões

Leia mais

Papel do analisador léxico: ler o arquivo fonte em busca de unidades significativas (os tokens) instanciadas por lexemas ou átomos.

Papel do analisador léxico: ler o arquivo fonte em busca de unidades significativas (os tokens) instanciadas por lexemas ou átomos. Análise Léxica Análise Léxica Papel do analisador léxico: ler o arquivo fonte em busca de unidades significativas (os tokens) instanciadas por lexemas ou átomos. Também denominado de scanner, porque varre

Leia mais

Folha 3 - Análise léxica

Folha 3 - Análise léxica Folha 3 Análise léxica 1. Escrever um programa em FLEX que permite contar o número de ocorrências de uma cadeia de caracteres contida num ficheiro de texto. 2. Escrever um programa em FLEX que permite

Leia mais

O que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page:

O que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page: O que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page: http://dinosaur.compilertools.net/ 1 O que faz Lex gera programas (em C)

Leia mais

Utiliza Expressões Regulares (ER) Estendidas para definir a especificação da análise léxica desejada

Utiliza Expressões Regulares (ER) Estendidas para definir a especificação da análise léxica desejada O que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page: http://dinosaur.compilertools.net/ 1 O que faz Lex gera programas (em C)

Leia mais

1 d=

1 d= O que faz/o que é Como usar / Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas / Exemplos The Lex & YACC page: http://dinosaur.compilertools.net/ Flex: versão livre http://simplesamples.info/c++/flex.php

Leia mais

Prof. Adriano Maranhão COMPILADORES

Prof. Adriano Maranhão COMPILADORES Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então

Leia mais

Compiladores. Lex e Yacc / Flex e Bison. Ferramentas Flex/Bison

Compiladores. Lex e Yacc / Flex e Bison. Ferramentas Flex/Bison Ferramentas Flex/Bison Prof. Sergio F. Ribeiro Lex e Yacc / Flex e Bison São ferramentas de auxílio na escrita de programas que promovem transformações sobre entradas estruturadas. São ferramentas desenvolvidas

Leia mais

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011 Compiladores Prof. Bruno Moreno Aula 8 02/05/2011 RECONHECIMENTO DE TOKENS Reconhecimento de Tokens Até aqui aprendemos a identificar tokens Para reconhecimento, a única abordagem utilizada foi árvores

Leia mais

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S. Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador

Leia mais

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2017.2 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

Leia mais

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior. LFA Aula 02 Linguagens regulares - introdução 28/09/2015 Celso Olivete Júnior olivete@fct.unesp.br 1 Na aula passada... Visão geral Linguagens regulares expressões regulares autômatos finitos gramáticas

Leia mais

a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER

a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER 1 Expressões Regulares (ER) Uma ER sobre um alfabeto é definida como: a) é uma ER e denota a linguagem vazia b) é uma ER e denota

Leia mais

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

Leia mais

Identificadores Nome de variáveis, constantes, métodos, etc...

Identificadores Nome de variáveis, constantes, métodos, etc... IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos Token genérico / Lei de formação bem definida Podem possuir limitações de tamanho e/ou valor Possuem valor semântico o token deve ser acompanhado

Leia mais

IV.2 Aspectos Léxicos Convencionais

IV.2 Aspectos Léxicos Convencionais IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos - Token genérico / Lei de formação bem definida - Limitações de tamanho e/ou valor - Possuem valor semântico o token deve ser acompanhado

Leia mais

Analisador Léxico parte II

Analisador Léxico parte II Analisador Léxico parte II Compiladores Mariella Berger Sumário Definições Regulares Gerador de Analisador Léxico Flex Exemplos As fases de um Compilador Análise Léxica Análise Sintática ANÁLISE Análise

Leia mais

Introdução. Flex e uma ferramenta para gerar scanners programas que reconhecem padrões lexicais em texto

Introdução. Flex e uma ferramenta para gerar scanners programas que reconhecem padrões lexicais em texto Compiladores Flex Introdução Flex e uma ferramenta para gerar scanners programas que reconhecem padrões lexicais em texto O flex lê o arquivo de entrada fornecido, para uma descrição de um scanner a ser

Leia mais

Linguagens de Programação Aula 5

Linguagens de Programação Aula 5 Aula 5 Celso Olivete Júnior olivete@fct.unesp.br Na aula anterior Ambiguidade Análise léxica Exercício calculadora 2/@ Na aula anterior AF calculadora 3/@ Na aula de hoje Análise léxica implementação Gramática

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 4 Análise Léxica Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir

Leia mais

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS Acadêmico: Roger Anderson Schmidt Orientador : Marcel Hugo Supervisor : Ricardo de Freitas Becker Empresa

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira

Leia mais

Tokens, Padroes e Lexemas

Tokens, Padroes e Lexemas O Papel do Analisador Lexico A analise lexica e a primeira fase de um compilador e tem por objetivo fazer a leitura do programa fonte, caracter a caracter, e traduzi-lo para uma sequencia de símbolos lexicos

Leia mais

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Análise léxica. Parte 01. Geovane Griesang

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Análise léxica. Parte 01. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise léxica Parte 01 geovanegriesang@unisc.br Compilador Compilador... é um programa de computador que lê um programa

Leia mais

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C ompiladores Análise Léxica Bruno Lopes Bruno Lopes ompiladores 1 / 31 Front-end Lida com a linguagem de entrada Teste de pertinência: código fonte linguagem fonte? Programa está bem formado? Sintaticamente?

Leia mais

Compiladores 02 Analise léxica

Compiladores 02 Analise léxica Compiladores 02 Analise léxica Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos Relembrando O compilador é dividido em duas etapas Análise Síntese Análise

Leia mais

Estrutura geral de um compilador programa-fonte

Estrutura geral de um compilador programa-fonte Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador

Leia mais

Análise Léxica. O papel do analisador léxico

Análise Léxica. O papel do analisador léxico Análise Léxica Compiladores 1 A varredura, ou análise léxica, é a fase de um compilador que lê o programafonte como um arquivo de caracteres e o separa em marcas. Essas marcas são como palavras em uma

Leia mais

Compiladores. Análise Léxica

Compiladores. Análise Léxica Compiladores Análise Léxica 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

Leia mais

V.2 Especificação Sintática de Linguagens de Programação

V.2 Especificação Sintática de Linguagens de Programação V.2 Especificação Sintática de Linguagens de Programação Deve ser baseada: No planejamento da Linguagem / Compilador Objetivos, Filosofia, Potencialidades,... Nos critérios de projeto/avaliação Legibilidade,

Leia mais

Compiladores 04 Analise léxica Jflex. Prof José Rui

Compiladores 04 Analise léxica Jflex. Prof José Rui Compiladores 04 Analise léxica Jflex Prof José Rui Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos JFlex Análise léxica Exemplo Soma = a + b * 40;

Leia mais

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1 Definição de uma Linguagem Linguagem= sintaxe + semântica Especificação da sintaxe: gramática livre de contexto, BNF (Backus-Naur Form) Especificação Semântica: informal (textual), operacional, denotacional,

Leia mais

Projeto de Compiladores. FIR Faculdade Integrada do Recife João Ferreira joaoferreira@fir.br 5 e 6 de março de 2007

Projeto de Compiladores. FIR Faculdade Integrada do Recife João Ferreira joaoferreira@fir.br 5 e 6 de março de 2007 Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira joaoferreira@fir.br 5 e 6 de março de 2007 Agenda da Aula Resposta exercício da aula passada Revisão As Fases de Um Compilador Analisador

Leia mais

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba Questão 01 No processo de construção de compiladores, é essencial compreender e manipular as expressões regulares e suas equivalências. Dentro desse contexto, seja o alfabeto = {a, b, c, d, e} e a seguinte

Leia mais

Introdução ao FLEX e expressões regulares

Introdução ao FLEX e expressões regulares Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07 Ficha 1 Introdução ao FLEX e expressões regulares Objectivos: Familiarização com a ferramenta FLEX; Introdução ao reconhecimento

Leia mais

Análise Léxica I. Eduardo Ferreira dos Santos. Março, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 31

Análise Léxica I. Eduardo Ferreira dos Santos. Março, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 31 Análise Léxica I Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Março, 2017 1 / 31 Sumário 1 A estrutura de um compilador 2 Analisador Léxico 2 / 31 A estrutura

Leia mais

Compiladores - Autômatos

Compiladores - Autômatos Compiladores - Autômatos Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp Especificação x Implementação Usamos expressões regulares para dar a especificação léxica da linguagem Mas como podemos

Leia mais

a * Expressões Regulares (ER) Conversão de AF para ER no JFLAP Equivalências entre AFD, AFND, AF-, ER, GR

a * Expressões Regulares (ER) Conversão de AF para ER no JFLAP Equivalências entre AFD, AFND, AF-, ER, GR a * Expressões Regulares (ER) Conversão de AF para ER no JFLAP Equivalências entre AFD, AFND, AF-, ER, GR 1 Expressões Regulares (ER) Uma ER sobre um alfabeto é definida como: a) é uma ER e denota a linguagem

Leia mais

Construção de Compiladores Aula 2 - Analisador Léxico

Construção de Compiladores Aula 2 - Analisador Léxico Construção de Compiladores Aula 2 - Analisador Léxico Bruno Müller Junior Departamento de Informática UFPR 8 de Agosto de 2014 1 Analisador Léxico 2 3 Método 1: Programa 4 Código Analisador Léxico 5 Método

Leia mais

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07 Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07 Ficha 3 Autómatos Finitos Objectivos: Introdução ao conceito de Autómato Finito e notações utilizadas na sua representação;

Leia mais

1 Expressões Regulares e Linguagens

1 Expressões Regulares e Linguagens 1 1 Expressões Regulares e Linguagens Linguagem de Programação o Pesquisa em Textos o Componentes de Compiladores Intimamente Relacionadas com AFNDs São capazes de definir todas e somente as linguagens

Leia mais

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Expressões e Definições Regulares Revisão Expressões regulares descrevem todas as linguagens que podem ser construídas

Leia mais

Python e sua sintaxe LNCC UFRJ

Python e sua sintaxe LNCC UFRJ Python e sua sintaxe LNCC UFRJ Linguagens naturais e formais Linguagens naturais Linguagem formal Um conjunto finito e não-vazio cujos elementos são símbolos Qualquer cadeia finita de símbolos justapostos

Leia mais

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática Linguagens Formais Aula 01 - Conceitos Básicos Prof. Othon Batista Mestre em Informática Sumário Introdução à Linguagem Alfabeto Cadeias de Símbolos, Palavras Tamanho de Palavra Prefixo, Sufixo ou Subpalavra

Leia mais

Análise Sintática Introdução

Análise Sintática Introdução Análise Sintática Introdução Renato Ferreira Linguagens e Automatas Linguagens formais são importantes em Computação Especialmente em linguagens de programação Linguagens regulares A linguagem formal mais

Leia mais

Análise Léxica II. Eduardo Ferreira dos Santos. Setembro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 30

Análise Léxica II. Eduardo Ferreira dos Santos. Setembro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 30 Análise Léxica II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Setembro, 2016 1 / 30 Sumário 1 Especicação de tokens 2 Reconhecimento de tokens Ambiguidade

Leia mais

Compiladores - Especificando Sintaxe

Compiladores - Especificando Sintaxe Compiladores - Especificando Sintaxe Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura

Leia mais

Construção de Compiladores Aula 3 - Analisador Sintático

Construção de Compiladores Aula 3 - Analisador Sintático Construção de Compiladores Aula 3 - Analisador Sintático Bruno Müller Junior Departamento de Informática UFPR 20 de Agosto de 2014 Definição A análise sintática (parsing) é um processo que verifica se

Leia mais

Compiladores. Introdução

Compiladores. Introdução Compiladores Introdução Apresentação Turma Noite Continuada I 20/03 Continuada II 22/05 Atividades Regimental 05/06 Total 1 Ponto 1 Ponto 1 Ponto 7 Pontos 10 Pontos Aulas expositivas teórico-práticas Exercícios

Leia mais

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos SCC-505 - Capítulo 1 Linguagens Regulares e Autômatos Finitos João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo

Leia mais

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação

Leia mais

EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE RONALD GLATZ

EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE RONALD GLATZ PROTÓTIPO TIPO PARA TRANSFORMAÇÃO DE UMA EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE 1 OBJETIVO DESTE TRABALHO ALGUNS CONCEITOS BÁSICOS

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação 128 13 129 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas

Leia mais

Linguagens de Domínio Específico

Linguagens de Domínio Específico Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL Gramáticas Vamos usar uma notação parecida com a de expressões regulares para definir

Leia mais

Compiladores Aula 2. Celso Olivete Júnior.

Compiladores Aula 2. Celso Olivete Júnior. Aula 2 Celso Olivete Júnior olivete@fct.unesp.br Relembrando... Métodos de implementação 1. Compilação: Tradução do programa fonte Linguagem máquina Tradução lenta, execução rápida 2 Relembrando... Métodos

Leia mais

Operações Fechadas sobre LR s Aplicações

Operações Fechadas sobre LR s Aplicações a n Operações Fechadas sobre LR s Aplicações (H&U, 969),(H&U, 979), (H;M;U, 200) e (Menezes, 2002) (Sipser,997) Operações que preservam a propriedade de ser uma LR Existem muitas operações que, quando

Leia mais

Compiladores. Análise Léxica

Compiladores. Análise Léxica Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa

Leia mais

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador Estrutura de um compilador Compiladores Análise lexical (1) Expressões Regulares 1 2 Plano da aula 1. Motivação do uso de E.R. e definições Linguagens, tokens, lexemas... 2. Regras de formação e exemplos

Leia mais

Compilação da linguagem Panda

Compilação da linguagem Panda Construção de Compiladores I [BCC328] Atividades Práticas Compilação da linguagem Panda Departamento de Computação Universidade Federal de Ouro Preto Prof. José Romildo Malaquias 22 de abril de 2015 Resumo

Leia mais

Compiladores - Análise Recursiva

Compiladores - Análise Recursiva Compiladores - Análise Recursiva Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp Geradores x Reconhecedores A definição formal de gramática dá um gerador para uma linguagem Para análise sintática,

Leia mais

DEP. INFORMÁTICA - UNIVERSIDADE DA BEIRA INTERIOR

DEP. INFORMÁTICA - UNIVERSIDADE DA BEIRA INTERIOR DEP. INFORMÁTICA - UNIVERSIDADE DA BEIRA INTERIOR Eng. Informática Linguagens Formais e Compilação 2º Semestre Resolução da Frequência 1 20/Abril/2010 Pergunta A.1 A.2 A.3 A.4 B C.1 C.2 Total Cotação 0,75

Leia mais

aceita, l L R L (l) = erro, l L

aceita, l L R L (l) = erro, l L 26 Capítulo 3 Análise Lexical A análise lexical é a primeira fase de um compilador A sua tarefa é a de ler a sequência de caracteres do canal de entrada e produzir uma sequência de palavras (lexemas) As

Leia mais

Expressões e Gramáticas Regulares e Autómatos Finitos

Expressões e Gramáticas Regulares e Autómatos Finitos Folha Prática Expressões e Gramáticas Regulares e Autómatos Finitos 1 Expressões e Gramáticas Regulares e Autómatos Finitos Expressões Regulares e Autómatos Finitos 1. Determine e implemente computacionalmente

Leia mais

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem

Leia mais

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Entrada e saída: escrevendo na tela Veja uma comparação entre um programa Portugol e seu equivalente em C: Inicio Inteiro

Leia mais

Expressões Regulares. Linguagens Formais e Autômatos. Andrei Rimsa Álvares

Expressões Regulares. Linguagens Formais e Autômatos. Andrei Rimsa Álvares Linguagens Formais e Autômatos Expressões Regulares Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (hcp://dcc.ufmg.br/~nvieira) Expressões Regulares Até agora foram vistas

Leia mais

Linguagens de Programação Aula 4

Linguagens de Programação Aula 4 Aula 4 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada... Autômatos finitos AF:exemplos... Cadeia de caracteres a,b,c 2/82 Na aula passada... Autômatos finitos AF:exemplos... Números inteiros(com

Leia mais

Descrição da Linguagem Pascal Jr.

Descrição da Linguagem Pascal Jr. Descrição da Linguagem Pascal Jr. Características gerais PascalJr possui convenções de tipos igual a linguagem Pascal PascalJr suporta definições de funções Com passagem de parâmetros por valor e por referência

Leia mais

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C ompiladores Introdução Bruno Lopes Bruno Lopes ompiladores 1 / 32 Apresentação Em que período estão? O quanto sabem de programação? Quais linguagens? O quanto sabem de unix? O quanto sabem de Linguagens

Leia mais

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam Linguagens Naturais LINGUAGENS FORMAIS Definições Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam São muito ricas, mas também ambíguas e imprecisas. Ex.: João

Leia mais

Compiladores I Prof. Ricardo Santos (cap 1)

Compiladores I Prof. Ricardo Santos (cap 1) Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve

Leia mais

Histórico e motivação

Histórico e motivação Expressões regulares 1. Histórico e motivação 2. Definição a) Sintaxe b) Semântica c) Precedência dos operadores 3. Exemplos 4. Leis algébricas 5. Dialetos 6. Aplicações 7. Exercícios Pré-requisito: básico

Leia mais

Compiladores - JFlex. Fabio Mascarenhas

Compiladores - JFlex. Fabio Mascarenhas Compiladores - JFlex Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp JFlex Um gerador de analisadores léxicos que gera analisadores escritos em Java A sintaxe das especificações é inspirada

Leia mais

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) ) Exercicios 7.1 Escreve expressões regulares para cada uma das seguintes linguagens de Σ = {a, b}: (a) palavras com não mais do que três as (b) palavras com um número de as divisível por três (c) palavras

Leia mais

Compiladores - JFlex. Fabio Mascarenhas Monday, April 15, 13

Compiladores - JFlex. Fabio Mascarenhas Monday, April 15, 13 Compiladores - JFlex Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp JFlex Um gerador de analisadores léxicos que gera analisadores escritos em Java A sintaxe das especificações é inspirada

Leia mais

Linguagens e Programação Gramáticas. Paulo Proença

Linguagens e Programação Gramáticas. Paulo Proença Linguagens e Programação Gramáticas Gramáticas Ferramenta para a descrição e análise de linguagens; Baseada num conjunto de regras que especificam o modo de construção das frases válidas na linguagem;

Leia mais

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior. LFA Aula 01 Apresentação 24/10/2016 Celso Olivete Júnior olivete@fct.unesp.br 1 Professor Celso Olivete Júnior Bacharelado em Ciência da Computação (Unoeste-2002) Mestrado e Doutorado em Engenharia Elétrica

Leia mais

Função de um Analisador Léxico (Scanner)

Função de um Analisador Léxico (Scanner) Análise Léxica Função de um Analisador Léxico (AL) Tarefas Secundárias do AL Vantagens da Separação entre Análise Léxica e Sintática Erros Léxicos Especificação e Reconhecimento dos tokens (ou átomos)

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

Leia mais

Tratamento dos Erros de Sintaxe. Adriano Maranhão

Tratamento dos Erros de Sintaxe. Adriano Maranhão Tratamento dos Erros de Sintaxe Adriano Maranhão Introdução Se um compilador tivesse que processar somente programas corretos, seu projeto e sua implementação seriam grandemente simplificados. Mas os programadores

Leia mais

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO LINGUAGEM LIVRE DE CONTEXTO As Linguagens Livres de Contexto é um reconhecedor de linguagens, capaz de aceitar palavras corretas (cadeia, sentenças) da linguagem. Por exemplo, os autômatos. Um gerador

Leia mais

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18 Análise Sintática Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 18 Sumário 1 Introdução 2 Derivações 2 / 18 1 Introdução 2 Derivações 3 /

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 06 Análise Sintática (Implementação) Edirlei Soares de Lima Análise Sintática A maioria dos compiladores separam a tarefa da análise sintática

Leia mais

Alfabeto, Cadeias, Operações e Linguagens

Alfabeto, Cadeias, Operações e Linguagens Linguagens de Programação e Compiladores - Aula 3 1 Alfabeto, Cadeias, Operações e Linguagens 1.Conjuntos Para representar um determinado conjunto é necessário buscar uma notação para representá-lo e ter

Leia mais

Linguagens Livres de Contexto

Linguagens Livres de Contexto Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação 364018 Linguagens Formais e Autômatos TEXTO 4 Linguagens Livres de Contexto Prof. Luiz A M Palazzo Maio de 2011

Leia mais

Ambiente de desenvolvimento

Ambiente de desenvolvimento Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa

Leia mais

Compiladores Aula 3. Celso Olivete Júnior.

Compiladores Aula 3. Celso Olivete Júnior. Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje... Analisador léxico: tratamento de erros 2 Arquitetura básica de um compilador Análise Análise Léxica Análise Sintática Análise Semântica

Leia mais

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:

Leia mais

Compiladores Aula 4. Celso Olivete Júnior.

Compiladores Aula 4. Celso Olivete Júnior. Aula 4 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje... Revisão: gramáticas Relações em uma gramática: Cabeça, Último, Primeiro (First) e Seguinte (Follow) Capítulo 4 (seção 4.4.2) do livro

Leia mais

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42 Análise Sintática I Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2017 1 / 42 Sumário 1 Introdução 2 Derivações 3 Ambiguidade 4 Análise sintática descendente

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler

Leia mais

Compiladores. Conceitos Básicos

Compiladores. Conceitos Básicos Compiladores Conceitos Básicos Processadores de Linguagem De forma simples, um compilador é um programa que recebe como entrada um programa em uma linguagem de programação a linguagem fonte e o traduz

Leia mais

A Linguagem C. A forma de um programa em C

A Linguagem C. A forma de um programa em C A Linguagem C Criada em 1972 por D. M. Ritchie e K. Thompson. Tornou-se uma das mais importantes e populares, principalmente pela portabilidade e flexibilidade. Foi projetada para o desenvolvimento de

Leia mais