Identificação do discente: Matrícula: Nome completo: Douglas Godeguez Nunes. Curso: Ciência da Computação
|
|
- Aparecida Beltrão Coimbra
- 7 Há anos
- Visualizações:
Transcrição
1 Identificação do discente: Nome completo: Douglas Godeguez Nunes Matrícula: Curso: Ciência da Computação Identificação do professor-orientador: Nome completo: Maria do Carmo Garcia Noronha Curso: Ciência da Computação Nome do projeto de pesquisa ao qual o aluno inscrito está vinculado: Identificação do Projeto: Título: Estudando um gerador automático de analisadores léxicos Curso: Graduação em Sistemas de Informação Linha de pesquisa do curso a qual o projeto está vinculado: Palavras-chave (três): Desenvolvimento e Aplicação de Algoritmos Flex Expressões regulares Analisador léxico
2 Título do Projeto de Iniciação científica: Estudando um gerador automático de analisadores léxicos Justificativa e Relevância do Tema Em um sistema moderno de TI, a necessidade de obter determinadas informações sobre arquivos de dados rapidamente é a diferença entre o sucesso e o fracasso de uma empresa. Para tal, os desenvolvedores de sistemas têm oferecido softwares que aceleram o recebimento de respostas, e ainda reduzem o trabalho do programador ao mínimo necessário, construindo ferramentas de auxílio na escrita de programas que promovem transformações de entradas estruturadas. Um analisador léxico ( scanner ) é um programa que permite ler os caracteres de um arquivo de texto (e.g., programa-fonte) e produzir uma sequência de componentes léxicos (tokens) que serão utilizados pelo analisador sintático ( parser ) e/ou identificar erros léxicos na entrada. Além de sua função básica, o analisador léxico em geral está encarregado de fazer algumas tarefas secundárias, designadamente, a eliminação de comentários, espaços em branco e tabulações. Um token representa um conjunto de cadeias de entrada possível e por sua vez, um lexema é uma determinada cadeia de entrada associada a um token. A ferramenta Lex 1 ou Flex 2 (LEVINE; MASON; BROWN, 1995) é um gerador de programas projetado para o processamento léxico 3 de sequências de caracteres. Segundo Price et al (2000), o analisador léxico pode ser implementado através de um gerador automático de analisadores léxicos como o Flex. Foi desenvolvida nos Bell Laboratories em meados dos anos 70, para programadores de compiladores e interpretadores, com a finalidade de separar a entrada em unidades léxicas, como preparação para um analisador sintático. Entretanto, a ferramenta é válida 1 lex-. [Do gr. lexix, eos.] El. comp. = 'ação de falar', 'palavra',... 2 flex=fast lexical analyser generator 3 léxico [Do gr. lexikón.] S.m. 1. Dicionário de línguas clássicas antigas Conjunto de vocábulos de um idioma....
3 também para outras aplicações, como detecção de padrões em arquivos de dados, linguagens de comandos, auditorias etc. O FLEX é uma ferramenta que permite gerar analisadores léxicos. Estes analisadores são capazes de reconhecer padrões léxicos em texto (e.g., números, identificadores e palavras-chave de uma determinada linguagem de programação). O analisador é construído com base num conjunto de regras. Uma regra é constituída por um par, padrão ação, o padrão (expressão regular) descreve o elemento a reconhecer e ação (ou conjunto de ações) define o procedimento que será realizado no caso de identificação positiva do padrão. Com base num arquivo-fonte escrito de acordo com a sintaxe do FLEX, o programa FLEX gerará um analisador léxico descrito na linguagem C. Em caso de existirem erros de codificação, o FLEX gerará uma listagem de erros. O código-fonte em C terá de ser compilado para a plataforma em utilização utilizando um compilador da linguagem C adequado (no caso do Linux, o GCC). O resultado final da compilação será um programa executável capaz de identificar os padrões definidos pelo programador e levar o conjunto de ações previsto. Como entrada para o analisador gerado, podem ser fornecidos arquivos de texto ou alternativamente fornecer os dados diretamente pela entrada-padrão do sistema. No exemplo seguinte são apresentados os comandos do Shell do sistema que compõem os passos necessários à compilação e utilização de um programa FLEX. Considere-se a existência de um arquivo arquivo.flex com o programa FLEX já escrito. flex arquivo.flex gcc lex.yy.c -lfl./a.out O comando flex gera, por omissão, um arquivo com o nome lex.yy.c que deverá ser compilado, por exemplo com o gcc. Na utilização do gcc é necessário indicar a utilização da biblioteca FLEX
4 adicionando o parâmetro -lfl. Por sua vez, o compilador de C gera, por omissão, um arquivo com o nome a.out. Por último, para a execução deste programa basta a evocação do seu nome na linha de comandos. Neste caso, a introdução dos dados terá de ser realizada via teclado (terminando obrigatoriamente com Ctrl+D). flex -oexemplo.c Exemplo.flex gcc Exemplo.c -o Programa -lfl./programa < Dados.txt Neste exemplo, o comando flex gera a partir do arquivo Exemplo.flex, o arquivo com o nome Exemplo.c que deverá ser compilado. Nesta utilização apresentada do gcc, é indicado o nome do executável a ser gerado, neste caso, Programa. Na execução do Programa, a introdução dos dados é realizada a partir do arquivo Dados.txt. Um programa em FLEX é constituído por três seções, a saber, declarações, regras e rotinas auxiliares. A separação entre as seções é feita inserindo uma linha com o símbolo %%. Considere-se o seguinte exemplo: %{ int numchars=0; %} %%. { numchars++; printf ( "%s", yytext ) ; } \n { numchars++; printf ( "\n" ) ; } %% main ( ) { yylex ( ) ; printf ( "Número de caracteres %d\n", numchars ) ; } A primeira seção, declarações, compreende duas partes:
5 (a) Instruções C nesta parte, delimitada pelos símbolos %{ e %}, são colocadas as instruções da linguagem C que posteriormente serão incluídas no início do arquivo C a gerar pelo FLEX. Os exemplos mais comuns são a inclusão de arquivos de cabeçalhos (headers.h), declarações de variáveis e constantes. (b) Expressões regulares nesta parte, podem ser declaradas macros para as expressões regulares mais comuns, como por exemplo, algarismo ou letra do alfabeto. /_ Definição de macros _/ ALGARISMO [0 9] /_ Algarismo _/ ALFA [ a za Z ] /_ Letra do alfabeto _/ Na segunda seção são apresentadas as regras (definição de padrões e ações) onde são definidas as expressões regulares (padrões) e as respectivas ações que se pretendem realizar no caso da identificação positiva ( pattern matching ) do referido padrão. No caso de um caractere qualquer, exceto mudança de linha (representado por. ) é incrementada a variável num_chars e impresso o referido caractere na saída-padrão. A mudança de linha (representado por \n ) é também contabilizada como um caractere e escrita na saídapadrão. O analisador léxico gerado funciona de acordo com as seguintes regras: Apenas uma regra é aplicada à entrada de dados; A ação executada corresponde à expressão que consome o maior número de caracteres; Caso existam duas ou mais expressões que consumam igual número de caracteres, tem precedência a regra que aparece em primeiro no arquivo. Quando um padrão é reconhecido, a sequência de caracteres consumida (token) na identificação do padrão é guardada na variável yytext (do tipo char *). Para além disso, o comprimento da referida sequência é guardado na variável yylengt (do tipo int).
6 Na terceira seção são escritas as rotinas de suporte em linguagem C que se pretende que seja adicionado ao programa a gerar pelo FLEX. Tipicamente este código inclui o corpo do programa, designadamente, a função main() da linguagem C. A função yylex() evoca o analisador léxico gerado pelo flex que processará as expressões regulares anteriormente descritas na seção anterior. Consideremos um exemplo mais elaborado, no qual é contabilizada a quantidade de números e de linhas existentes no arquivo. Neste exemplo, recorre-se à utilização de um macro para a definição de algarismo. %{ int qtdnumeros=0, nlinhas=0; %} ALGARISMO [0 9] %% /_ Se a ação for descrita numa só linha as chaves podem ser omitidas _/ \n { nlinhas++; } {ALGARISMO}+ { printf ( "d %s \n", yyt ext ) ; qtdnumeros++;}. { } %% main ( ) { yyl ex ( ) ; printf ( "# l i n h a s=%d\n", nlinhas ) ; printf ( "# numeros=%d\n", qtdnumeros ) ; } Todos os caracteres não processados pelas duas primeiras expressões regulares são consumidos pela última à qual não corresponde nenhuma ação particular. Quanto ao ambiente de trabalho, o acesso a uma máquina LINUX pode ser realizado utilizando o programa flex que deverá estar instalado no Shell. A edição dos arquivos fonte pode ser realizada a partir de qualquer editor de texto básico (e.g., no ambiente Windows existe o Bloco de Notas) desde que os arquivos sejam gravados em formato txt. A seguir, são apresentados alguns dos padrões mais relevantes utilizados pelo FLEX.
7 Padrão x Universidade Municipal de São Caetano do Sul Descrição O caractere x. Qualquer caractere exceto mudança de linha \n Mudança de linha [xyz] xyz Um dos caracteres x, y ou z A cadeia de caracteres xyz [a-za-z] Um dos caracteres no intervalo de a a z ou de A a Z [-+*/] Qualquer um dos operadores -, +, * ou /, sendo que o símbolo - tem de aparecer em primeiro lugar dada a possibilidade de ambiguidade com a definição de intervalo [abj-oz] Um dos caracteres a, b ou de j a o ou Z [ˆA-Z\n] Qualquer caractere exceto no intervalo de A a Z ou mudança de linha r* O caractere r zero ou mais vezes r+ O caractere r uma ou mais vezes r? O caractere r zero ou uma vez r{2,5} r{2,} r{4} O caractere r repetido de duas a cinco vezes O caractere r repetido pelo menos duas vezes O caractere r repetido exatamente quatro vezes {macro} Substituição/Expansão da macro definida anteriormente (r) xyz* (xyz)* r s ˆr O caractere r, sendo que os parêntesis permitem estipular precedências A sequência xy seguida de zero ou mais z s A sequência xyz repetida zero ou mais vezes O caractere r ou s (alternativa) O caractere r apenas se no início da linha r$ O caractere r apenas se no final da linha (não consome o \n) ˆxyz$ Uma linha que contém apenas a cadeia de caracteres xyz <<EOF>> Fim de arquivo Objetivos
8 As vantagens desse sistema sobre as ferramentas alternativas estão em permitir um rápido desenvolvimento de protótipos e na manutenção simples do software, além de favorecer a tomada de decisão e de providências importantes e imprescindíveis no desenvolvimento de um sistema de TI. Nossa proposta está no desenvolvimento de estudos de caso usando a ferramenta Lex na geração automática de códigos a partir de arquivos diversos, para transformações simples e extração de padrões em textos. Metodologia A metodologia utilizada no desenvolvimento desse trabalho ainda em andamento segue as seguintes etapas: (a) Levantamento de material bibliográfico relativo aos conceitos envolvidos; (b Familiarização com a ferramenta FLEX; (c) Pesquisa sobre ferramentas de geração de analisadores de padrões existentes; (d) Estudos: Introdução ao reconhecimento de padrões e expressões regulares; (e) estudo do ambiente de trabalho proposto, reforçando alguns comandos básicos de Linux importantes para a utilização do FLEX; (f) Aprendizagem dos conceitos através da realização de alguns exercícios práticos e implementação no ambiente escolhido; (g) Testes de funcionalidade; e análise dos resultados. Os métodos estão apresentados no cronograma proposto. Estaremos trabalhando tempo integral nas dependências da Universidade. Serão necessários para o desenvolvimento do projeto: Um microcomputador onde estará instalado o sistema operacional Linux; A ferramenta Flex ou Lex instalada nos comandos do Shell; e Papel sulfite para elaboração dos relatórios. Cronograma de Atividades do Projeto
9 Tabela 1 Plano de Atividades (agosto 2009 julho 2010) PERÍODO ATIVIDADE 2009 Agosto Setembro Outubro Novembro Dezembro Pesquisa e Estudo da ferramenta Flex ou Lex Estudos referentes aos pré-requisitos Linguagens Formais Construção de cenários que permitam testar as funcionalidades da ferramenta. Implementação e análise dos testes. Análise dos resultados dos testes Janeiro Fevereiro Março Abril Maio Junho Julho Elaboração de relatório parcial Montagem de um conjunto significativo de testes Participação em Workshop de Iniciação Científica Elaboração da documentação dos experimentos práticos efetuados dos cenários de testes criados Elaboração da documentação dos experimentos práticos efetuados Montagem final da documentação Elaboração do relatório final Bibliografia Básica
10 LEVINE, R. John; MASON, Tony; BROWN, Doug. Lex & Yacc. Beijing: O Reilly, p. PRICE, Ana Maria de Alencar; TOSCANI, Simão Sirineo. Implementação de linguagens de programação: compiladores. Porto Alegre: Sagra-Luzzatto: p. Jandl, Peter Jr. Flex - Um Tutorial. Disponível no endereço: Acesso em: 2 junho 2009
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 maisIntrodução ao reconhecimento de padrões e expressões regulares; Aprendizagem dos conceitos através da realização de alguns exercícios;
Capítulo 1 Introdução ao Flex Objectivos: Familiarização com a ferramenta FLEX; Introdução ao reconhecimento de padrões e expressões regulares; Aprendizagem dos conceitos através da realização de alguns
Leia maisAnalisador 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 maisCompiladores. 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 maisConstruçã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 maisLex 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 maisCompiladores 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 maisProgramação I A Linguagem C. Prof. Carlos Alberto
Programação I A Linguagem C Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada
Leia maisCompiladores. 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 maisLinguagens e Programação FLEX. Paulo Proença
Linguagens e Programação FLEX Analisador léxico Programa que lê um ficheiro de texto (p.e. source code) e produz uma sequência de componentes léxicos (tokens) As sequências de tokens produzidas serão utilizados
Leia maisCompiladores 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 maisCompiladores. 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 maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisCompiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia maisIntroduçã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 maisCOMPILAÇÃO. Ricardo José Cabeça de Souza
COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo
Leia maisLinguagens de Programação
O estudante estuda muito. Regras: 7 9 12 14. . Regras: 2 4 . Regras: 1 Representar através de uma árvore de derivação. 77 O estudante estuda muito.
Leia maisCompiladores. 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 maisAmbiente 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 maisDESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE
DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE Jeferson MENEGAZZO 1, Fernando SCHULZ 2, Munyque MITTELMANN 3, Fábio ALEXANDRINI 4. 1 Aluno 5ª fase do Curso de Ciência da Computação do Instituto
Leia maisIdentificadores 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 mais1 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 maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisIV.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 maisAlgoritmos e Introdução à Programação. Lógica e Linguagem de Programação
Algoritmos e Introdução à Programação Lógica e Linguagem de Programação Prof. José Honorato Ferreira Nunes honoratonunes@softwarelivre.org http://softwarelivre.org/zenorato/honoratonunes Linguagem C Prof.
Leia maisUniversidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação
Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Análise Semântica Disciplina: Compiladores Equipe: Luiz Carlos dos Anjos Filho José Ferreira Júnior Compiladores Um compilador
Leia maisCompiladores. 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 maisCompiladores 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 maisConhecendo a Linguagem de Programação C
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Conhecendo a Linguagem de Programação C DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Como
Leia maisAlgoritmos 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 maisCompiladores - 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 maisCompiladores - 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 maisPrimeiro Trabalho Prático Turma A. Descrição do Trabalho. Considere os seguintes dados a respeito de um livro:
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos Profa. Dra. Cristina Dutra de Aguiar Ciferri PAE
Leia maisCompiladores. 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 maisINE5421 LINGUAGENS FORMAIS E COMPILADORES
INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de
Leia maisLinguagem de Programação
Linguagem de Programação aula 4 Engenharia Elétrica e Engenharia de Automação Introdução à Computação 1.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) Programas Programas são seqüências de instruções
Leia maisEngenharia de Software
Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação
Leia maisPROGRAMAÇÃO I. Introdução
PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação
Leia maisCP Compiladores I Prof. Msc.. Carlos de Salles
CP 5017.9 Prof. Msc.. Carlos de Salles 1 - EMENTA O Processo de Compilação. Deteção e Recuperação de Erros. Introdução à geração de Código Intermediário. Geração de Código de Máquina. Otimização. Uma visão
Leia maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisPROGRAMAÇÃ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 maisIntrodução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes
Introdução à Programação Introdução a Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Introdução Variáveis Tipos de dados Operadores e Expressões: Operadores
Leia mais16. Compilação no Linux
16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código
Leia maisAula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU
Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito
Leia maisCompiladores 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 maisV.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 maisProgramação de Computadores I Introdução PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO Introdução Resolução de problemas Encontrar uma maneira de descrever este problema de uma forma clara e precisa. Encontremos uma seqüência
Leia maisAná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 maisIntroduçã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 maisPró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica
FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONSTRUÇÃO DE COMPILADORES CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2017/02 PROFESSOR: EDUARDO FERREIRA DOS SANTOS
Leia maisEspecificações Gerais do Compilador e Definição de FRANKIE
Especificações Gerais do Compilador e Definição de FRANKIE 1. Especificações Gerais do Compilador (Decisões de projeto) 2. Especificações da Linguagem Fonte Definição Informal Considerações Léxicas Considerações
Leia maisI LINGUAGENS E PROCESSADORES: INTRODUÇÃO 1
PREÂMBULO PREFÂCIO xiii xv I LINGUAGENS E PROCESSADORES: INTRODUÇÃO 1 1 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 2 2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.4 2.4.1 2.4.2
Leia maisIntrodução à Lógica de Programação
Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação Programação Tradução de um algoritmo para uma linguagem de programação Cada linguagem de programação possui sua sintaxe
Leia maisSegundo Trabalho Prático Turma A
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos Profa. Dra. Cristina Dutra de Aguiar Ciferri PAE
Leia maisIntrodução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 04 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAL LINGUAGEM IREMOS ESTUDAR? 2 Introdução à Programação Linguagens
Leia maisProgramação Orientada a Objetos. Manipulação de Exceções
Programação Orientada a Objetos Manipulação de Exceções Cristiano Lehrer, M.Sc. Introdução à Manipulação de Exceções (1/2) Em uma linguagem sem manipulação de exceção: Quando ocorre uma exceção, o controle
Leia maisPROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017
PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017 Resumo Pré-processador Directivas Macros Exemplos Exercícios Pré-Processador O
Leia maisFunçã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 maisINE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:
INE5416 Paradigmas de Programação Ricardo Azambuja Silveira INE CTC UFSC E Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira Conceitos Léxica estudo dos símbolos que compõem uma linguagem Sintaxe
Leia maisLaboratório de Introdução à Ciência da Computação I
Laboratório de Introdução à Ciência da Computação I Aula 1 - Estrutura Sequencial Professores: Vanderlei Bonato (responsável) - vbonato@icmc.usp.br Roberto de M. F. Filho (aluno PAE) - rmdff@icmc.usp.br>
Leia maisAná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 maisFamiliarização com a ferramenta JavaCC
Ficha nº 2 Familiarização com a ferramenta JavaCC Estrutura do ficheiro JavaCC O JavaCC utiliza um ficheiro com a extensão.jj, onde são descritos, pelo utilizador, o léxico e a sintaxe da linguagem e gera
Leia maisConceitos Básicos de Programação
BCC 201 - Introdução à Programação Conceitos Básicos de Programação Guillermo Cámara-Chávez UFOP 1/53 Conceitos básicos I Variável 2/53 Conceitos básicos II Posição de memoria, identificada através de
Leia maisCompiladores. 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 maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 03 Processo de Compilação Edirlei Soares de Lima Métodos de Implementação Arquitetura de Von Neumann: A linguagem de máquina de um computador
Leia maisComputação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa
Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo
Leia maisFACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS
Leia maisTratamento 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 maisDesenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar
Leia maisCompiladores - 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 mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos
Leia maisProgramação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR
Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Introdução Compiladores e interpretadores são formas de tradução de um código geralmente de alto nível (escrito em uma linguagem de
Leia maisRevisão. Profa Marina Gomes
Revisão Profa Marina Gomes Algoritmos Na construção de um programa, o problema que o algoritmo representa é composto por três fases. Entrada: dados de entrada do algoritmo. Processamento: ações sobre os
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA DISCIPLINA: CÓDIGO: CURSOS/PRE-REQUISITO: CIC Linguagens formais e autômatos N COMPILADORES INF01147
Leia maisLinguagem de Programação I. Aula 10 Funções
Linguagem de Programação I Aula 10 Funções Da Aula Anterior Tipos de dados básicos e operadores em C Declaração de variáveis e modificadores de tipo Estruturas de Controle Arrays unidimensionais Geração
Leia maisCompiladores. 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 maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um
Leia maisConversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação
Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada
Leia maisProgramação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio
Leia maisAlgoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza
Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha Conceitos Lógica de Programação técnica de encadear pensamentos
Leia maisWorking 03 : Conceitos Básicos I
Working 03 : Conceitos Básicos I Objetivos: Dominar os conceitos básicos da linguagem de programação C; Aprender a utilizar o compilador, identificando os erros de sintaxe do código fonte; Prazo de Envio:
Leia maisAspectos do analisador sintático Usabilidade da Dias de atraso
Aspectos do analisador sintático Usabilidade da Dias de atraso Grupo Interface Modularidade e Doc. Interna Doc. Externa Erros léxicos Cada teste vale (0.5) Total = (7,0) Nota Final fluxo de dados (0.5)
Leia maisIntrodução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 04 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAL LINGUAGEM IREMOS ESTUDAR? 2 Introdução à Programação Linguagens
Leia maisFerramentas Programação. UDESC - Prof. Juliano Maia 1
Ferramentas Programação UDESC - Prof. Juliano Maia 1 Índice Seção 1 Linguagens de Programação Seção 2 Interpretador Seção 3 Compilador / Linkeditor Seção 4 Ambientes de Desenvolvimento UDESC - Prof. Juliano
Leia maisLaboratório de Introdução à Ciência da Computação I
Laboratório de Introdução à Ciência da Computação I Aula 1 - Estrutura Sequencial Professores: Vanderlei Bonato (responsável) - vbonato@icmc.usp.br Luiz Henrique Kiehn (aluno PAE) - lhkiehn@icmc.usp.br
Leia maisINSTITUTO 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 maisIntrodução à Linguagem C
Engenharia de CONTROLE e AUTOMAÇÃO Introdução à Linguagem C Aula 02 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br
Leia maisCompiladores - 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 maisEstruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Leia maisII.1 Conceitos Fundamentais. Uma delas é programar o =>
II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores II.5.1 Estrutura de um tradutor II.5.1.1 Análise Léxica II.5.1.3
Leia maisCOMPILADORES PROGRAMA E BIBLIOGRAFIA
COMPILADORES PROGRAMA E BIBLIOGRAFIA Mariza A. S. Bigonha e Roberto S. Bigonha UFMG 27 de maio de 2008 Todos os direitos reservados Proibida cópia sem autorização dos autores OBJETIVOS DO CURSO Ensinar
Leia maisConceitos Básicos de C
Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,
Leia mais