Creazione di un parser con il programma yacc
Il programma yacc crea dei parser che definiscono e fanno rispettare la struttura per l'input di carattere ad un programma di computer.
- file di grammatica
- Un file di origine che contiene le specifiche per la lingua da riconoscere. Questo file contiene anche le subroutine main, yyerrore yylex . È necessario fornire queste subroutine.
- principale
- Una sottoroutine di linguaggio C che, come minimo, contiene una chiamata alla subroutine yyparse generata dal programma yacc . Una forma limitata di questa subroutine è disponibile nella libreria yacc .
- yyerror
- Una sottoroutine di linguaggio C per gestire gli errori che possono verificarsi durante l'operazione del parser. Una forma limitata di questa subroutine è disponibile nella libreria yacc .
- yylex
- Una sottoroutine di linguaggio C per eseguire l'analisi lessicale sul flusso di input e passare i token al parser. È possibile utilizzare il comando lex per generare questa sottoroutine dell'analizzatore lessicale.
Quando il comando yacc ottiene una specifica, genera un file di funzioni del linguaggio C denominato y.tab.c. Quando compilato utilizzando il comando cc , queste funzioni formano la sottoroutine yyparse e restituiscono un intero. Quando si chiama, la sottoroutine yyparse richiama la subroutine yylex per ottenere token di input. La sottoroutine yylex continua a fornire input fino a quando il parser rileva un errore o la sottoroutine yylex restituisce un token di fine marcatore per indicare la fine dell'operazione. Se si verifica un errore e la sottoroutine yyparse non può recuperare, restituisce un valore di 1 alla subroutine principale . Se trova il token di fine - marker, la sottoroutine yyparse restituisce un valore di 0 alla subroutine principale .