Typy tokenów¶
Pierwszym etapem kompilacji jest tokenizacja.
Plezuro posiada następujące typy tokenów (kolejność ma znaczenie, kiedy regex lub warunek wielu tokenów pasuje, pierwszy z nich wygrywa):
Typ |
Regex lub warunek |
Przykład |
|---|---|---|
komentarz jednoliniowy |
\/\/.* | //a comment |
komentarz wieloliniowy |
\/\*.* | /*a comment*/ |
| regex | r((‘([^’]|(‘’))*’)|(“([^”]|(“”))*”)) | r’[a-k]’ |
nawias |
\[|\]|\(|\)|\{|\}|(#\()|(\$\()|(%\() | {this + first} |
liczba |
‘^(0x[0-9a-f]+)|(0b[01]+)|(0[0-7]+)|([0-9]+(.[0-9]+)?(e[+-]?[0-9]+)?)$’ | 23.45e56 |
deklaracja |
\$[A-Za-z_]+[A-Za-z_0-9]* | $aVariable |
pole klasy |
[A-Za-z_]+[A-Za-z_0-9]*::[A-Za-z_]+[A-Za-z_0-9]* | Person::totalNr |
pole obiektu |
@[A-Za-z_]+[A-Za-z_0-9]* | @name |
biały znak |
[ \t]+ | |
| operator | jeden ze zdefiniowanych ciągów znaków |
+ |
| symbol | [A-Za-z_]+[A-Za-z_0-9]* | aVariable |
| string | (‘’)|(‘.*?([^\\]|(\\\\))’)|(“”)|(”.*?([^\\]|(\\\\))”) | ‘a text’ |