Introdução ao FLEX e expressões regulares
|
|
|
- Maria do Loreto Rodrigues do Amaral
- 9 Há anos
- Visualizações:
Transcrição
1 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 de padrões e expressões regulares; Aprendizagem dos conceitos através da realização de alguns exercícios; Apresentar o ambiente de trabalho proposto (secção 1.6); Relembrar alguns comandos básicos de Linux importantes para a utilização do FLEX (secção 1.7). 1.1 Analisadores léxicos Um analisador léxico (scanner) é um programa que permite ler os caracteres de um ficheiro de texto (e.g., programa-fonte) e produzir uma sequência de componentes léxicos (tokens) que serão utilizados pelo analisador sintáctico (parser) e/ou identificar erros léxicos na entrada. Além de sua função básica, o analisador léxico em geral está encarregue 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. Considere os exemplos apresentados na tabela 1.1. 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 acção, o padrão (expressão regular) descreve o elemento a reconhecer e acção (ou conjunto de acções) define o procedimento que será realizado no caso de identificação positiva do padrão. 1
2 Tabela 1.1: Tokens e lexemas Tokens Lexemas FOR for IF if WHILE while NÚMERO 1089, , 0.2, IDENTIFICADOR i, j, contador, nomealuno OP_SOMA + OP_MAIOR_IGUAL >= ABRE_PAR ( 1.2 Modo de utilização do FLEX O ciclo de vida de um programa FLEX obedece à estrutura apresentada na figura 1.1. Erros de FLEX Erros de compilação Ficheiro texto n Ficheiro texto 2 Ficheiro texto 1 ficheiro fonte flex.flex FLEX ficheiro fonte C.c Compilador (gcc) programa executável Resultado n Resultado 2 Resultado 1 Figura 1.1: Ciclo de vida de um programa FLEX Com base num ficheiro 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 ficheiro fonte em C terá de ser compilado para a plataforma em utilização utilizando um compilador da linguagem C adequado (neste caso o GCC). O resultado final da compilação será um programa executável capaz de identificar os padrões definidos pelo programado e levar o conjunto de acções previsto. Como entrada para o analisador gerado podem ser fornecidos ficheiros de texto ou alternativamente fornecer os dados directamente pelo standard de entrada. No exemplo seguinte são apresentados os passos necessários à compilação e utilização de um programa FLEX. Considere-se a existência de um ficheiro ficheiro.flex 2
3 com o programa FLEX já escrito. flex ficheiro.flex gcc lex.yy.c -lfl./a.out O comando flex gera, por omissão, um ficheiro 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 adicionando o parâmetro -lfl. Por sua vez, o compilador de C gera, por omissão, um ficheiro 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 consola (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 ficheiro Exemplo.flex, o ficheiro com o nome Exemplo.c que deverá ser compilado. Nesta utilização apresentada dogcc, é 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 ficheiro Dados.txt. 1.3 Formato de um ficheiro FLEX Um programa em FLEX é constituído por três secções, a saber, declarações, regras e rotinas auxiliares. A separação entre as secções é feita inserindo uma linha com o símbolo %%. Considere-se o seguinte exemplo que será discutido nas secções seguintes. 1 %{ 2 int numchars=0; 3 %} 4 5 %% 6 7. { 8 numchars++; 9 printf ("%s", yytext ) ; 10 } \n { 3
4 13 numchars++; 14 printf ("\n" ) ; 15 } %% main () 20 { 21 yylex ( ) ; 22 printf ("Número de caracteres %d\n", numchars ) ; } Declarações Esta secção compreende duas partes: 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 ficheiro C a gerar pelo FLEX. Os exemplos mais comuns são a inclusão de ficheiros de cabeçalhos ( headers,.h), declarações de variáveis e constantes. 1 / Definição da variável numchars / 2 %{ 3 int numchars=0; 4 %} Expressões regulares nesta parte, podem ser declaradas macros para as expressões regulares mais comuns como por exemplo algarismo ou letra do alfabeto. 1 / Definição de macros / 2 ALGARISMO [0 9] / Algarismo / 3 ALFA [ a za Z] / Letra do alfabeto / A utilização de macros para expressões regulares será explicada com detalhe mais adiante Regras (definição de padrões e acções) Nesta secção são definidas as expressões regulares (padrões) e as respectivas acções que se pretendem realizar no caso da identificação positiva (pattern matching) do referido padrão. 4
5 No caso de um qualquer carácter excepto mudança de linha (representado por. ) é incrementada a variável num_chars e impresso o referido carácter no standard de saída. A mudança de linha (representado por \n ) é também contabilizada como um carácter e escrita no standard de saída. As expressões regulares têm de ser obrigatoriamente escritas na primeira coluna do ficheiro. 1. { 2 numchars++; 3 printf ("%s", yytext ) ; 4 } 5 6 \n { 7 numchars++; 8 printf ("\n" ) ; 9 } Na secção 1.8 são apresentados alguns dos padrões mais relevantes utilizados pelo FLEX. o analisador léxico gerado funciona de acordo com as seguintes regras: Apenas uma regra é aplicada à entrada de dados; A acçã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 ficheiro. 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 yyleng 1 (do tipo int) Rotinas em C de suporte Nesta secção pode ser escrito o código 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. 1 main () 2 { 3 yylex ( ) ; 4 printf ("Número de caracteres %d\n", numchars ) ; 5 } 1 O valor desta variável poderia ser obtido através da instrução da linguagem C strlen(yytext) 5
6 A função yylex() evoca o analisador léxico gerado pelo flex que processará as expressões regulares anteriormente descritas (ver secção 1.3.2). 1.4 Exemplo mais elaborado Considere o seguinte exemplo, no qual é contabilizado a quantidade de números e de linhas existentes no ficheiro. Neste exemplo recorre-se à utilização de uma macro para a definição de algarismo. 1 %{ 2 int qtdnumeros =0, nlinhas =0; 3 %} 4 5 ALGARISMO [0 9] 6 7 %% 8 9 / Se a acção for descrita numa só linha 10 as chavetas podem ser omitidas / \n nlinhas++; 13 {ALGARISMO}+ { printf ("d %s\n", yytext ) ; qtdnumeros++;} %% 17 main () 18 { 19 yylex ( ) ; 20 printf ("# linhas=%d\n", nlinhas ) ; 21 printf ("# numeros=%d\n", qtdnumeros ) ; 22 } Todos os caracteres não processados pelas duas primeiras expressões regulares são consumidos pela última à qual não corresponde nenhuma acção particular. 1.5 Propostas de exercícios a) Escrever um programa que permite contar o número de ocorrências de uma cadeia de caracteres; b) Escrever um programa que permite substituir uma cadeia de caracteres por outra; 6
7 c) Escrever um programa que dado um ficheiro de texto, mostra: número de algarismos; número de letras do alfabeto; número de linhas de texto; número de espaços ou tabulações (\t); número de caracteres não identificados nos pontos anteriores; d) Escrever um programa que permite identificar números naturais; Entrada Saída 123 abc s 245 xyz xyz 2 abc 45 cc 2 45 e) Escrever um programa que permite identificar números inteiros (com ou sem sinal); f) Escrever um programa que permite identificar números com parte decimal (com ou sem sinal); 7
8 1.6 Ambiente de trabalho O acesso a uma máquina LINUX pode ser realizado utilizando o programa putty que está instalado em c:putty em modo SSH (ver figura 1.2). As máquinas a utilizar deverão ser ssh, ssh1 e ssh2. Figura 1.2: Acesso SSH via putty A edição dos ficheiros fonte pode ser realizada a partir de qualquer editor de texto básico (e.g., no ambiente Windows existe o Programmer s Notepad) desde que os ficheiros sejam gravados em formato Unix. 1.7 Resumo de comandos UNIX úteis Na tabela 1.2 são apresentados os comandos que permitem fazer mudança de directório e mostrar qual o directório actual. Tabela 1.2: Mudar e mostrar directório Comando Descrição cd Mudar para o directório home cd.. Mudar para o directório pai cd <DIR> Mudar para o directório DIR pwd Mostra o path do directório actual 8
9 Na tabela 1.3 são apresentados os comandos que permitem listar o conteúdo de um determinado directório. Tabela 1.3: Listagem do conteúdo de um directório Comando Descrição ls Mostra conteúdo do directório actual ls -a idem incluindo ficheiros escondidos ls -la idem incluindo ficheiros escondidos sob a forma de lista ls <DIR> -l Mostra conteúdo do directório DIR sob a forma de lista Na tabela 1.4 são apresentados os comandos que permitem alterar as permissões de acesso a ficheiros e/ou directórios. As permissões podem ser de três tipos: Leitura (r) permite visualizar o conteúdo quando de se trate de ficheiros, no caso de directórios, permite fazer um ls; Escrita (w) permite alterar o conteúdo quando de se trate de ficheiros e no caso de directórios permite criar ficheiros/directórios no referido directório; Execução (x) permite executar um programa, quando de se trate de ficheiros, no caso de directórios, permite aceder aos seus conteúdos; As permissões de acesso a um ficheiro ou directório estão subdivididas por três grupos de utilizadores: o próprio (owner); o grupo (group); restantes (other). Considere o seguinte extracto resultado da execução do comando ls -la no qual o primeiro campo faz a codificação das permissões leitura, escrita e execução (rwx) para cada grupo. Estas permissões podem ser convertidas para um valor numérico somando 4 para r, 2 para w e 1 para x. -rwxr user profs 25 Jan fich drwx--x--- 4 user profs 4096 Jan 17 16:31 dir/ Neste exemplo, o ficheiro fich tem permissões de leitura, escrita e execução para o próprio, leitura para o grupo e nenhuma para os restantes utilizadores. Por sua vez, o directório dir (o primeiro carácter é um d no caso de directórios) tem permissões de leitura, escrita e execução para o próprio, execução para o grupo e nenhuma para os restantes utilizadores. 9
10 Tabela 1.4: Alteração de permissões de acesso de ficheiros/directórios Comando Descrição chmod u+rwx,go-rw <FICH> Concede as permissões rwx para o utilizador; retira as permissões rw para utilizadores do mesmo grupo e outros; as outras permissões não são alteradas chmod u+rwx,go+rx <DIR> Concede as permissões rwx para o utilizador; concede as permissões rx para utilizadores do mesmo grupo e outros; as outras permissões não são alteradas chmod 751 <DIR> Concede somente as permissões: rwx (7 = ) para o utilizador, rx (5 = 4 + 1) para utilizadores do mesmo grupo e x (1) para outros utilizadores 1.8 Padrões utilizados no FLEX Na tabela 1.5 são apresentados alguns dos padrões mais relevantes utilizados pelo FLEX. Padrão Tabela 1.5: Padrões utilizados no FLEX Descrição x O carácter x. Qualquer carácter excepto mudança de linha \n Mudança de linha [xyz] Um dos caracteres x, y ou z xyz 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 /, send 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 carácter excepto no intervalo de A a Z ou mudança de linha r* O carácter r zero ou mais vezes r+ O carácter r uma ou mais vezes r? O carácter r zero ou uma vez r{2,5} O carácter r repetido de duas a cinco vezes r{2,} O carácter r repetido pelo menos duas vezes r{4} O carácter r repetido exactamente quatro vezes 10
11 Tabela 1.5: Padrões utilizados no FLEX Padrão Descrição {macro} Substituição/Expansão da macro definida anteriormente (r) O carácter r, sendo que os parêntesis permitem estipular precedências xyz* A sequência xy seguida de zero ou mais z s (xyz)* A sequência xyz repetida zero ou mais vezes r s O carácter r ou s (alternativa) ˆr O carácter r apenas se no início da linha r$ O carácter 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 ficheiro 11
Introduçã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
Linguagens 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
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
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
Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07. Tópicos avançados
Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07 Tópicos avançados Este documento apresenta alguns métodos para a resolução de problemas, susceptíveis de ocorrer na resolução
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
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
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;
Familiarizaçã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
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
A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão
A - Introdução O C é orientado para a produção de aplicações informáticas de grande dimensão Na geração de aplicações informáticas há ficheiros gerados a partir de outros: logo, os segundos têm obrigatoriamente
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes [email protected] 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
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
Linguagem 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
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
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
Gestão de ficheiros e directórios
([email protected]) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos 2005-2006 Conteúdo Ficheiros Comando ls Globbing 1 Ficheiros
Programação I A Linguagem C. Prof. Carlos Alberto
Programação I A Linguagem C Prof. Carlos Alberto [email protected] [email protected] 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada
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
COMPILAÇÃ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
Listagens de ficheiros e directorias
Listagens de ficheiros e directorias Listagens de ficheiros e directorias Para além do tipo dos ficheiros, o modo possui nove caracteres que representam as permissões (ou protecções) associadas aos ficheiros
Ana Paula Tomás. Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011
Ana Paula Tomás Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011 Aula 1 Objectivos e programa da disciplina. Critérios de avaliação. Um primeiro programa
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
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;
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:
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
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
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)
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)
Programa fonte token padrões lexema Tokens
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
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
Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 04 Algoritmos e Programação Estruturada
Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre T. 04 Algoritmos e Programação Estruturada Objectivos: Aprender o conceito de algoritmo e suas características fundamentais
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
Compilador de LP3 para C3E e P3
Compilador de LP3 para C3E e P3 Luís Gil 1 13 de Junho de 2005 1 estudante de Ciências Informáticas no Instituto Superior Técnico 1 Introdução Este relatório descreve a sintaxe e a semântica da Linguagem
3.1 - Funções para manipular dados de entrada e saída padrão
1616161616161616161616161616161616161616161616161616 3- ENTRADA E SAÍDA EM C Os principais meios para executar operações de entrada e saída (E/S) são: Entrada e saída pelo console (ou padrão): teclado
Mestrado em Engenharia Física Tecnológica
2 a Aula - Os Meus Primeiros Programas em C Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério [email protected] Departamento de Física Instituto Superior Técnico Universidade
Introdução à Programação em C Input / Output
Introdução à Programação em C Input / Output Resumo Aula Anterior Programa começa com função main() Sintaxe para definição de funções Definição de variáveis e atribuições Estruturas de controlo if-then
ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal
ALGORITMOS AULA 01 Baseado nas aulas do Prof. Jorgiano Vidal LINGUAGEM C Uma das grandes vantagens do C é que ele possui tanto caracterìsticas de "alto nìvel" quanto de "baixo nìvel". Linguagem de propósito
Conhecendo 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
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
Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1
Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores Aula - Tópico 1 1 Problema 1 Considere o seguinte problema: Determinar o valor de y = seno(1,5). 2 Definições Para
Computaçã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
AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)
AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) Ø LP Java. Estrutura de um programa em Java. Ø Conjunto de caracteres utilizado. Ø Identificadores. Ø Variáveis e constantes. Ø Tipos
Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira
Linguagem C Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João
Conversõ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
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?
TASM DEFINIÇÃO DE UMA NOVA TABELA DE CONVERSÃO
TASM O TASM (Telemark Assembler) é um assemblador baseado em tabelas de conversão que corre em MS-DOS ou Linux. Código Assembly escrito de acordo com uma determinada sintaxe pode ser compilado usando o
Aula 5 - Mais C e repetição
Vamos nesta aula mostrar mais detalhes e a forma geral dos comandos C vistos até agora. O comando de atribuição A forma geral do comando de atribuição é: = A expressão
Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Introdução à Programação Operadores, Expressões Aritméticas e Entrada/Saída de Dados Programa em C #include int main main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius
Algoritmia e Programação APROG. Tecnologia JAVA. IDE Netbeans. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31
APROG Algoritmia e Programação Tecnologia JAVA IDE Netbeans Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 Tecnologia Java Sumário Tecnologia Java Desenvolvimento de Programas Ambientes de Desenvolvimento
Entraremos em sistema linux para realizar algumas tarefas e aprender alguns comandos.
Entraremos em sistema linux para realizar algumas tarefas e aprender alguns comandos. Como se conectar a partir do sistema Windows: Conexão direta SSH: Putty (download) Entrando numa conta no servidor:
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
Estruturas 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
Programaçã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
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
Introdução à Programação em C (II)
Introdução à Programação em C (II) Resumo Streams de Texto Leitura e escrita de caracteres Caracteres como números inteiros Exemplos Cópia de Ficheiros Contagem de Caracteres Contagem de Linhas Contagem
Legibilidade do código fonte
Sumário Legibilidade do código fonte Exemplos Normas Instrução switch Sintaxe e Semântica Exemplo Tipos enumerados Exemplo Programação 2007/2008 DEEC-IST 1 Legibilidade do código fonte Exemplo: Considere
Universidade 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 [email protected] Processadores de linguagem Linguagens de programação são notações para se descrever
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
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
Administração de sistemas Linux. Permissões de arquivos e diretórios em sistemas linux.
Administração de sistemas Linux Permissões de arquivos e diretórios em sistemas linux. As permissões são um dos aspectos mais importantes do Linux (na verdade, de todos os sistemas baseados em Unix). Elas
TÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Estruturas de Dados I Enunciado do Trabalho Prático
Estruturas de Dados I Enunciado do Trabalho Prático Licenciatura em Engenharia Informática Universidade de Évora 2001/2002 1 Objectivo Pretende-se implementar uma base de dados sobre as viagens efectuadas
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
Linguagem de Programação C
Linguagem de Programação C Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais 13 de novembro de 2009 Introdução O que é uma linguagem
Linguagens e Programação BISON. Paulo Proença
Linguagens e Programação BISON BISON Gerador de analisadores sintáticos. Converte uma gramática independente de contexto LARL(1) 1 num programa C capaz de processar frases da linguagem. Gramática LARL(1)
Introduçã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 [email protected]
IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias
1 IDES E PROGRAMAÇÃO Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias {claudio,macdias}@icmc.usp.br 2 Agenda Conceitos Instalação e Configuração Compilação e Execução de Código IDEs Exemplo
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
Linguagens 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
#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
