Flex
Flex to program służący do generowania skanerów, czyli programów dokonujących leksykalnej analizy plików zawierających tekst napisane w językach sztucznych, w szczególności językach programowani (C, Java, Python, Ruby, itp.) oraz językach reprezentacji danych (XML, YAML, itp.).
Skanery zamieniają jednolity tekst pliku na ciąg tokenów, które następnie mogą zostać przekazane do parsera odpowiedniego języka. Proces zamiany tekstu na tokeny jest zazwyczaj znacznie prostszy niż jego parsowanie, gdyż struktura tokenów zazwyczaj może być opisana z wykorzystaniem gramatyk regularnych, których jedną z reprezentacji są wyrażenia regularne.
Flex na podstawie wyrażeń regularnych odpowiadających poszczególnym tokenom, może wykonywać pewne akcje. Mogą one obejmować np. wypisanie tokenu na standardowe wyjście, bądź przekazanie go parserowi.
Pełniejszy opis fleksa znajduje się w jego podręczniku systemowym
Przykładowe zadania
- Zdefiniować program, który zamienia wszelkie wystąpienia słowa “abc” na “abecadło”
- Zdefiniować program, który dokonuje analizy syntaktycznej wyrażeń matematycznych. Powinien on odróżniać:
- liczby całkowite 124
- liczby rzeczywiste 123.34
- operatory arytmetyczne + –
- nawiasy () {} []
- relacje < <= >= = !=
- zmienne a b abc123
- Zdefiniować program, który dokonuje podstawowej syntaktycznej wybranego, uproszczonego języka programowania
- Zdefiniować program, dokonujący analizy syntaktycznej plików XML