#ifndef __REGEXP_H
#define __REGEXP_H

#ifndef __STDTYPES_H
#include <stdtypes.h>
#endif

#ifndef NULL
#include <stddef.h>
#endif

// Composizione delle regular expression:
// -------------------------------------
// - '*'     sostituisce una qualunque sottostringa (0 o pił caratteri)
// - '?'     sostituisce un carattere qualunque (necessariamente presente)
// - [RANGE] sostituisce un carattere presente nel RANGE specificato
// I range si compongono di singoli caratteri o di sottoinsiemi di caratteri,
// indicati con un carattere iniziale, un segno meno ('-') e un carattere
// finale. Esempio [0-9a-fL] comprende i caratteri dallo '0' al '9', dalla 'a'
// alla 'z' e la lettera 'L'. I range possono essere prefissati da '!' o
// '^' per indicare che l'insieme dei caratteri specificati sono esclusi
// e non inclusi. Esempio [!jkwxy] indica la sostituzione di qualunque
// carattere tranne 'j', 'k', 'w', 'x', 'y' e 'z'.
// Per specificare nei pattern gli stessi metacaratteri con cui si formano i
// pattern basta prefissarli con l'escape '\'. Esempio [\[\]] sostituisce un
// carattere di parentesi quadra aperta o chiusa.

bool match(const char *pat, const char *str); // ritorna TRUE se il pattern (primo parametro) e la stringa (secondo) coincidono

#endif
