| Tabel 4-1: Grundprincipper i regulære udtryk | ||
| Sammensætning (Concatenation) | xy | Mønsteret består af x fulgt af y |
| Alternativ (Alternation) | x|y | Mønsteret består af enten x eller y |
| Arbitrær gentagelse (Arbitrary repetition) | x* | Mønsteret består af strengen x gentaget nul eller flere gange |
| Kilde: Introduction to Compiling Techniques, 2nd Edition (Tabel 5.2 side 75) |
| Tabel 4-2: Udvidelser af grundprincipperne brugt af FLEX | ||
| Karakter klasser | [0-9] | Et valg af karakterer i mængden; i dette tilfælde 0|1|2|3|4|5|6|7|8|9. Det er muligt at specificere mere end én mængde, fx [A-Za-z] |
| NOT operator | ^ | Angives som første tegn for at invertere det følgende, fx [^A-Z] betyder at der ikke må startes med stort bogstav |
| Arbitrær karakter | . | Matcher alle tegn med undtagelse af ny linie |
| Enkel gentagelse | x? | Nul eller én forekomst af x. I Svendsk bruges fx '-?' i definitionen for et tal, for at angive at der max. må forekomme ét minus-tegn. |
| Ikke-nul gentagelse | x+ | x gentaget én eller flere gange |
| Specificeret gentagelse | x{n, m} | x gentaget mellem n og m gange |
| Begyndelse af linie | ^x | Match kun x i begyndelsen af en linie |
| Slutning af linie | x$ | Match kun x i slutningen af en linie |
| Kontekst følsom | ab/cd | Match kun ab når fulgt af cd |
| Kilde: Introduction to Compiling Techniques, 2nd Edition (Tabel 5.3 side 76) |
| Tabel 4-3: Udvidelser der involverer tegn med speciel betydning | ||
| Litterære strenge | "x" | Brug x og ikke en evt. speciel betydning. Dette kan især være brugbart i Svendsk, når der skal tjekkes for "()". |
| Litterære tegn | \x | Hvis x er en operator, bruges x. Nyttigt i Svendsk, når vi i tekst-strenge bruger "-tegnet. |
| Definitioner | {navn} | Erstat med predefineret mønster navn. |
| Kilde: Introduction to Compiling Techniques, 2nd Edition (Tabel 5.4 side 76) |
/* Definitioner */
kommentar ";>"[^"<;"\n]*"<;"
mellemrum [ \t\n]+
tegn [^\[\]\(\)] // ASCII undt. '[', ']', '(', ')'
skriv_tekst ({tegn})*
%% /* Regler */
{mellemrum} { }
{kommentar} { }
">>" { return(FELT_START) }
"<<" { return(FELT_STOP) }
%% /* Kode */
// Ingen kode endnu
|
| Eksempel 4-1: Et FLEX program |