- Το αρχείο εισόδου αποτελείται από τα παρακάτω τμήματα:
- Η δομή του αρχείου είναι η παρακάτω:
definitions
%%
rules
%%
user code
- Οι ορισμοί επιτρέπουν τον ορισμό κανονικών εκφράσεων με τη σύνταξη:
name definition.
- Παράδειγμα:
DIGIT [0-9]
ID [a-z][a-z0-9]*
- Στους ορισμούς προσθέτουμε και την εντολή:
%option noyywrap
για να δηλώσουμε πως η είσοδός μας αποτελείται από ένα μόνο αρχείο.
- Στους ορισμούς μπορούμε να ορίσουμε και μεταβλητές της C για
δική μας χρήση αρχίζοντας της γραμμή με κενό:
DIGIT [0-9]
int numlines;
- Τέλος στους ορισμούς μπορούμε να ορίσουμε πρόσθετα αρχεία εισόδου
μέσα σε ενότητες %{ και %}:
%{
#include <math.h>
%}
- Οι κανόνες ορίζουν ενέργειες που αντιστοιχούν σε κανονικές εκφράσεις (ΚΕ)
της εισόδου με τη σύνταξη:
pattern action.
όπου pattern είναι μια ΚΕ και action κώδικας σε C.
- Παράδειγμα:
("hi")* printf("hi or hihi or hihihi ...\n");
DIGIT printf("Read one digit\n");
- Τέλος ο κώδικας χρήστη αντιγράφεται ως έχει στον παραγόμενο κώδικα.