Compilação
Fazendo a compilação de um script vivi-lang.
Importação
Considere importar a biblioteca da vivi-lang, aqui demos o nome de @fantastic/compiler
import { compile } from "@fantastic/compiler";
Execução da compilação
A execução da compilação
import { compile } from "@fantastic/compiler";
const sourceCode = `
$<vivi>
// your vivi-lang code
$</vivi>
`
const tree = compile(sourceCode)
console.log(tree)
Com sucesso
Gerando a compilação do seguinte código em vivi-lang
$<vivi>
print("Hello World");
$</vivi>
O retorno será a árvore no seguinte formato:
{
"nodeType": "$<vivi>",
"left": {
"nodeType": "id",
"left": {
"nodeType": "print",
"left": {
"nodeType": "id",
"value": "name"
}
},
"right": null
},
"right": {
"nodeType": "$</vivi>",
"left": null,
"right": null
}
}
Com erro léxico
Gerando a compilação do seguinte código em vivi-lang onde o @ não é um token válido
$<vivi>
print(name);
@
$</vivi>
O retorno será um LexicalException
no seguinte formato:
{
error: "UNEXPECTED_CHARACTER",
line: 3,
column: 2,
}
Com erro sintático
Gerando a compilação do seguinte código em vivi-lang, removido ;
$<vivi>
print(name)
$</vivi>
O retorno será um SyntaxException
no seguinte formato:
{
error: "EXPECTED_TOKEN",
token: { type: '$</vivi>', value: '$</vivi>', line: 3, column: 1 },
tokenType: ';'
}