Pular para o conteúdo

Onde a leitura engana

As seis construções que o parser lê de um jeito e quem escreve lê de outro.

Uma gramática sem ambiguidade para o parser ainda pode ser ambígua para quem lê. Estas são as seis que mais custam tempo — cada uma com a forma certa, que roda.

PareceO parser lêEscreva
x // notacomentáriox ~/ 2 para dividir
lambda => xs >> morph x: x * 2o pipeline aplicado ao lambdalambda => (xs >> morph x: x * 2)
morph n: n given c otherwise 0o given abre uma instruçãomorph n: (n given c otherwise 0)
distill a, v: a + v 0 / len(x)o inicial é 0 / len(x)divida depois: (xs >> distill a, v: a + v 0) / len(x)
spawn B().f()(spawn B()).f()é o que se quer — e era o contrário antes
$"{v[\"id\"]}"interpolação que não termina$"{v["id"]}" — aspas normais dentro de {}
dataforge
xs := [1, 2, 3]
dobro := lambda => (xs >> morph x: x * 2)
assert dobro() is [2, 4, 6]

sinais := xs >> morph n: (n given n bigger 1 otherwise 0)
assert sinais is [0, 2, 3]

media := (xs >> distill a, v: a + v 0) / len(xs)
assert media is 2.0

v := {"id": 7}
assert $"item {v["id"]}" is "item 7"
assert 7 ~/ 2 is 3
out "as seis formas certas rodam"

Quando a dúvida é como isto foi lido, dataforge tokens e dataforge ast respondem na hora — ver tokens, ast, ir.