Gramática — Léxico
6 produções: tokens, literais, comentários e indentação. Cada exemplo é aceito pelo parser.
Antes do parser, o lexer corta o texto em tokens. É aqui que moram as decisões que mais enganam: o // que é comentário, o d que faz um decimal, a indentação que vira INDENT/DEDENT.
| Produção | Nós que ela produz |
|---|---|
inteiro | IntegerLiteral |
decimal | DecimalLiteral |
texto | StringLiteral |
interpolacao | InterpolatedString |
comentario | Assignment |
indentacao | GivenBlock |
inteiro#
text
inteiro = digito { digito | "_" } ;dataforge
x := 1_000_000decimal#
text
decimal = digito { digito } "." digito { digito } "d" ;dataforge
preco := 19.99dtexto#
text
texto = '"' { caractere } '"' | '"""' { caractere | NEWLINE } '"""' ;dataforge
sql := """SELECT *
FROM t"""interpolacao#
text
interpolado = "$" '"' { caractere | "{" expressao "}" } '"' ;dataforge
n := 2
out $"n vale {n * 2}"comentario#
text
comentario = "//" { caractere } NEWLINE ;dataforge
x := 7 // um comentario
y := x ~/ 2indentacao#
text
bloco = ":" NEWLINE INDENT { instrucao } DEDENT ;dataforge
given yes:
out 1Estas produções saem de dataforge/gramatica.py. No terminal: dataforge gramatica lexico. Volte para a gramática.