Skip to content

Commit a30c180

Browse files
committed
feat: start lexer doc
1 parent 58c87d3 commit a30c180

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

lexer/readme.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Lexer
2+
3+
Sua função é facilitar trabalhar com o código-fonte durante processo de compilação.
4+
5+
Esse lexer transforma o código-fonte em uma sequência de tokens
6+
7+
código-fonte -> tokens
8+
9+
Tokens são pequenos e fáceis de reconhecer, e são posteriormente enviados ao parser para serem transformados em um *abstract syntax tree (ast)*.
10+
11+
Em monkey, espaços em branco são utilizados meramente para separar tokens, e o comprimento deles é irrelevante. Por isso, o lexer ignora o comprimento dos espaços em branco.
12+
13+
Lexers utilizados em linguagens comerciais geralmente anexam ao token o número da linha, da coluna, e o nome do arquivo referente a ele. O lexer de monkey não faz isso.
14+
15+
Os tipos atribuídos aos tokens por esse lexer são:
16+
17+
| Tipo atribuído | Descrição | Exemplo | Tipo do token |
18+
|----------------|-----------------------------------------------------|---------|-------------------|
19+
| ILLEGAL | Caracteres ilegais (não reconhecidos pelo lexer) | | Especial |
20+
| EOF | Final do arquivo | | Especial |
21+
| IDENT | Identificadores de variáveis | result | Operador |
22+
| INT | Números inteiros | 1 | Operador |
23+
| ASSIGN | Operador de atribuição | = | Delimitador |
24+
| PLUS | Operador de soma | + | Delimitador |
25+
| COMMA | Separador de identificador | , | |
26+
| SEMICOLON | Separador de declaração (geralmente final de linha) | ; | |
27+
| LPAREN | TODO | ( | |
28+
| RPAREN | TODO | ) | |
29+
| LBRACE | TODO | { | |
30+
| RBRACE | TODO | } | |
31+
| FUNCTION | Utilizado na declaração de função | fn | Palavra reservada |
32+
| LET | Utilizado na declaração de variável | let | Palavra reservada |
33+
34+
35+
36+
37+
38+
39+

0 commit comments

Comments
 (0)