File. var nome: file of tipo; FILE *puntatore;

Documenti analoghi
Analisi Lessicale. File

Corso di Linguaggi di Programmazione - Laboratorio - Stefano Ferilli. Università degli Studi di Bari A.A.

Analizzatore Lessicale Parte I Scanner

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Analizzatore lessicale

Laboratorio di Informatica I

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Linguaggi e Traduttori Esercitazione di laboratorio N.2 - soluzione

Dati due punti sul piano calcolare la loro distanza

Allocazione dinamica memoria

Istruzioni di controllo

case 0: /* child 1 - writing end */ close(fd[0]); // close read end write(fd[1], string, (strlen(string)+1));/* +1 is termination \0 */ return (0);

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Informatica I Facoltà di Ingegneria

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche

Cosa serve per cominciare?

Introduzione al linguaggio C

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie

Struttura di un linguaggio

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

Lab 11 Gestione file binari

Sviluppare un programma in FORTRAN

INPUT/OUTPUT INPUT/OUTPUT

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

Tipi strutturati - struct

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

Fondamenti di Informatica T-1 modulo 2

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

Implementazione di DFA in C

INPUT/OUTPUT. L'immissione dei dati di un programma e l uscita dei suoi risultati avvengono attraverso operazioni di lettura e scrittura

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Sistemi Operativi (M. Cesati)

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; };

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib.

Aritmetica postfissa

TIPI DI DATO. e quasi sempre anche collezioni di oggetti, mediante la definizione di tipi strutturati

Laboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza

Fondamenti di Informatica L-A

Il C nel C++ Struttura di un linguaggio. Elementi lessicali. Spazi. Livello lessicale: Livello sintattico: Livello semantico:

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Esercitazione 11. Liste semplici

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h

Introduzione al linguaggio C Primi programmi

Ordinamento/Ricerca Hash

Corso di Informatica

Scritto di Algoritmi e s.d. (1o anno) 5 Luglio 2005

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo

Progetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO. Modulo II: L analizzatore lessicale (AL)

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Esercizio 1 File: ordinamento di un archivio di studenti (file binario)

LIBRERIE STANDARD in C Le librerie standard

Esercizio 1 (15 punti)

Alfabeto ed elementi lessicali del linguaggio C

Lab 03 Istruzioni Prima Parte"

Fondamenti di Informatica T-1, 2013/2014 Modulo 2. Prova d Esame 1A di Giovedì 9 Gennaio 2014 tempo a disposizione 2h

ESERCIZIO allochi staticamente un vettore V1 di 10 float e allochi dinamicamente un vettore V2 di 10 double;

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 16 Giugno 2009 Compito A

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto

In una coda gli inserimenti si fanno alla fine e le cancellazioni all inizio! First In First Out

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 2A di Mercoledì 13 Gennaio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica

Fondamenti di Informatica T-1 Modulo 2

TIPI DI DATO TIPI DEFINITI DALL UTENTE

Esercitazioni di Prog. II (funzioni su insiemi) Chiara Petrioli

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else

Programmazione Procedurale in Linguaggio C++

Strutture dati dinamiche in C (II)

Valutazione di espressioni. Valutazione di espressioni

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 1B di Mercoledì 19 Gennaio 2011 tempo a disposizione 2h

Informatica A aa Seconda prova in itinere. Esempi di esercizi possibili

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Informatica 1. Prova di recupero 21 Settembre 2001

ESTRARRE PAROLE (SIMBOLI) DA UNA STRINGA 1

Struttura di un. Struttura dei programmi C

Esercizio 1 (17 punti)

La sintassi del C APPENDICE H

Ricerca binaria (o dicotomica) di un elemento in un vettore

Linguaggi e Traduttori: Analisi lessicale

I files in C. A cura del prof. Ghezzi

Costruzione dell insieme dei Follow

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 2A di Mercoledì 2 Febbraio 2011 tempo a disposizione 2h

Struttura dei programmi e Variabili

Opinione calcolamedia( ) Opinione inverti( )

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE

Linguaggi e Ambienti di Programmazione

Transcript:

File var nome: file of tipo; FILE *puntatore; reset(nome) read(nome, arg,, arg) rewrite(nome) write(nome, arg,, arg) puntatore = fopen(nome, r ); fscanf(puntatore,, &arg,, &arg); puntatore = fopen(nome, w ); fprintf(puntatore,, arg,, arg); chiusura del file: aggiunta di dati: fclose(puntatore); puntatore = fopen(nome, a );

File Gestione tramite un puntatore Struttura contenente informazioni sul file Modalità di apertura Necessità di chiusura #include <stdio.h> Possibilità di accesso per caratteri int getc(file *puntatore) int putc(int c, FILE *puntatore)

Estrazione di parole da file (I) #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <ctype.h> #define MAXTOKEN 256 struct token { char name[maxtoken+1]; int cat; }; int gettoken(file *src, struct token *tkn, int max);

Estrazione di parole da file (II) int main() { FILE *source; char *categories[] = {"3n caratteri", "3n+1 caratteri","3n+2 caratteri"}; struct token next; } source = fopen("sorgente","r"); while (gettoken(source, &next, MAXTOKEN)) printf("token: %s -> Category: %s\n", next.name,categories[next.cat]); fclose(source); system("pause"); return 0;

Estrazione di parole da file (III) int gettoken(file *src, struct token *tkn, int max) { int car, i=0; if ((car = getc(src))!= EOF) { while (isspace(car)) car = getc(src); while (car!= EOF &&!isspace(car) && i <= max) { tkn->name[i] = car; i++; car = getc(src); } tkn->name[i] = '\0'; tkn->cat = i % 3; return 1; } else return 0; }

Esercizio Inserire i token letti in una struttura ordinata tabella Hash albero binario Gestire token più lunghi del massimo consentito Ignorare i caratteri in eccesso

Analizzatore lessicale Implementazione di un automa Strutture a scelta multipla nidificate Output per ciascun token riconosciuto: Classe Contenuto (identificatori, interi, stringhe) Necessità di lookahead Conservazione di caratteri letti ma non usati

Analizzatore lessicale Un possibile insieme di token Operatori e Separatori / * + - > >= < <= <> = : := ;., ( ) Identificatori (lettera seguita da lettere o cifre) Caratteri, Interi, Reali Parole chiave BEGIN, BOOLEAN, CHAR, DO, ELSE, END, FALSE, IF, INTEGER, PROGRAM, REAL, THEN, TRUE, VAR Spazi bianchi, Fine file, Commenti /* */

Commenti Analizzatore lessicale Possibili soluzioni Ignorati dallo scanner Ignorati dal main Identificatori Keyword Riconoscimento separato Distinzione tramite procedura apposita

Analizzatore lessicale Funzioni main(); Legge iterativamente i token in un file, sistemando gli identificatori in una tabella Hash o albero binario int scan(); Legge il token successivo restituendone il codice ed eventualmente il contenuto (salta spazi e commenti) int get_char(); Legge il carattere successivo dal file sorgente, contando le linee (opzionale) int keyword(); Controlla se il token è una parola chiave, restituendone la classe

Analizzatore lessicale Variabili FILE *source_file File sorgente da analizzare char id_or_no[] Contenuto dell ultimo token letto (se identificatore o numero o stringa) int lookahead Ricorda se è stato letto un carattere in più int car Ultimo carattere letto

Analizzatore lessicale Implementazione (I) if (!lookahead) car = get_char(); else lookahead = 0; if (car == EOF) return FILE_END; else if (isalpha(car)) /* riconoscimento identificatore */ else if (isdigit(car)) /* riconoscimento numero */

Analizzatore lessicale Implementazione (II) switch (car) { case '*': return MULTIPLICATION;... case '>': if ((car = get_char()) == '=') return GREATER_OR_EQUAL; else { lookahead = 1; return GREATER; }... default: printf("invalid char: %c\n",car); }

Esercizio Scrivere un programma C che esegua l analisi lessicale di un file e ne costruisca la tabella dei simboli (identificatori) Assegnare un codice ad ogni token Scrivere la funzione che legge e riconosce il token successivo Implementazione di un automa