-
Notifications
You must be signed in to change notification settings - Fork 0
bonfa/compilatori
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
COMPILATORE La cartella /lessicale contiene un analizzatore lessicale del linguaggio. La cartella contiene: an_lessicale_alone.lex: file lex def.h: file di intestazione makefile: con le direttive per la compilazione Questa versione dell'analizzatore lessicale riceve in input un file e per ogni token nel file, ritorna la codifica di tale simbolo. Esempio di utilizzo (dopo aver compilato): cat ./file_table/keywords.table | ./an_lessicale_alone -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* La cartella /sintattico contiene un analizzatore sintattico del linguaggio. La cartella contiene: def.h: file di intestazione lessicale.lex: analizzatore lessicale sintattico.c: analizzatore sintattico makefile: con le direttive per la compilazione L'analizzatore si basa su un metodo top-down e restituisce i codici del matching tra il simbolo in ingresso e la grammatica mostrando le due codifiche. Se viene trovato un errore, viene stampata una stringa che mostra il numero della riga che lo contiene. In questa versione l'analizzatore sintattico NON crea l'albero della frase. Esempio di utilizzo: cat ./file_table/keywords.table | ./sintattico -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* La cartella /albero contiene un analizzatore sintattico del linguaggio che genera un albero sintattico. La cartella contiene: albero.c: stampa l'albero def.h: file di intestazione lessicale.lex: analizzatore lessicale sintattico.c: analizzatore sintattico makefile: con le direttive per la compilazione L'analizzatore si basa su un metodo top-down e restituisce un albero i cui nodi sono gli elementi terminali e non terminali della grammatica del linguaggio. Se viene trovato un errore, viene stampata una stringa che mostra il numero della riga che lo contiene. Esempio di utilizzo: cat ./file_table/keywords.table | ./sintattico -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* La cartella /yacc contiene un analizzatore sintattico del linguaggio che genera un albero sintattico ralizzata tramite yacc. La cartella contiene: albero.c: stampa l'albero def.h: file di intestazione lessicale.lex: analizzatore lessicale parser.y: analizzatore sintattico realizzato tramite yacc parser_solo_sintassi.y: verifica solamente che la sintassi sia corretta, senza creare l'albero sintattico makefile: con le direttive per la compilazione test_parser.py: verifica che l'albero generato dal parser a discesa ricorsiva sia uguale a quello generato dal parser ralizzato tramite yacc L'analizzatore sintattico si basa su YACC e restituisce un albero sintattico astratto della frase del linguaggio. In particolare, l'albero generato è uguale a quello generato dal parser a discesa ricorsiva. Se viene trovato un errore, viene stampata una stringa che mostra il numero della riga che lo contiene. Esempio di utilizzo: cat ./file_table/es_0.table | ./solo_sintassi (controlla la correttezza della frase) cat ./file_table/es_0.table | ./parser (genera l'albero sintattico) -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* La cartella /compiler contiene il front end del compilatore del linguaggio table. Esso genera il codice intermedio del codice ricevuto in ingresso. La cartella contiene: docs/: cartella che contiene la specifica del linguaggio esempi_table/: cartella che contiene i file table su cui sono stati realizzati i test test_results/: i risultati dei test esatti e quelli generati expr.c: contiene il codice che effettua l'analisi semantica e la generazione di codice delle espressioni della EBNF gen.c: contiene le funzioni di base che sono usate per la generazione di codice main.c: print.c: contiene le funzioni per la stampa sem.c: contiene le funzioni di base che sono usate per l'analisi semantica stat.c: contiene il codice che effettua l'analisi semantica e la generazione di codice degli statement della EBNF symtab.c: contiene le funzioni di base per operare sulle tabelle dei simboli def.h: file di intestazione lexer.lex: analizzatore lessicale parser.y: analizzatore sintattico che genera un albero sintattico astratto makefile: test_compiler.py: modulo python utilizzato per il test Esempio di utilizzo: cat ./esempi_table/es_0.table | ./table (genera il codice per il file es_0.table) python test_compiler.py (lancia il test per tutti i file contenuti in /esempi_table)
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published