Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rogerinn/little_poc

Little poc é uma versão reduzida e para testes de pré-compilador JIT e AOT rodando totalmente em contêineres sem a necessidade direta de infraestrutura de sistemas operacionais e maquinas virtuais
https://github.com/rogerinn/little_poc

ast c compiler compilers golang javascript nodejs parser rust

Last synced: 4 days ago
JSON representation

Little poc é uma versão reduzida e para testes de pré-compilador JIT e AOT rodando totalmente em contêineres sem a necessidade direta de infraestrutura de sistemas operacionais e maquinas virtuais

Awesome Lists containing this project

README

        

## 🔧 Compilação e uso

Para rodar a aplicação, execute os comandos abaixo:

1) Abra um terminal e copie este repositório com o comando
```bash
git clone https://github.com/rogerinn/little_poc/
```
ou use a opção de download.

2) Entre na pasta com
```bash
cd little_poc
```

3) Rode a aplicação
```bash
./start.sh nome_do_arquivo.js > opcodes.txt
```
Ou
```bash
./start.sh nome_do_arquivo.js > opcodes.rnc
```
para linkar os `std`.

Arquitetura base:
5) Atualmente o modelo é simples, já está em refatoração para o pre-compiler JIT e AOT.
```c
struct SyntaxRule syntax_table[] = {
{
"let", {
{{"VariableExpr", ",", "VariableExpr", ";"}, 4},
{{"VariableExpr", "=", "VariableExpr", ";"}, 4},
{{"VariableExpr", "=", "[", "]", ";"}, 5},
{{"VariableExpr", "=", "{", "}", ";"}, 5},
{{"VariableExpr", "=", "[", "VariableExpr", "]", ";"}, 6},
{{"VariableExpr", "=", "[", "MultExpr", "]", ";"}, 6},
{{"VariableExpr", "=", "{", "VariableExpr", "}", ";"}, 6},
{{"VariableExpr", "=", "{", "MultExpr", "}", ";"}, 6},
{{"VariableExpr", "=", "\"", "VariableExpr", "\"", ";"}, 6},
{{"VariableExpr", "=", "\'", "VariableExpr", "\'", ";"}, 6},
{{"VariableExpr", "=", "VariableExpr", "=", ">", "VariableExpr", ";"}, 7},
{{"VariableExpr", "=", "VariableExpr", "=", ">", "{", "VariableExpr", "}", ";"}, 9},
{{"VariableExpr", "=", "(", "MultExpr", ")", "=", ">", "{", "MultExpr", "}", ";"}, 11}
}, 13
},
{
"const", {
{{"VariableExpr", ",", "VariableExpr", ";"}, 4},
{{"VariableExpr", "=", "VariableExpr", ";"}, 4},
{{"VariableExpr", "=", "[", "]", ";"}, 5},
{{"VariableExpr", "=", "{", "}", ";"}, 5},
{{"VariableExpr", "=", "[", "VariableExpr", "]", ";"}, 6},
{{"VariableExpr", "=", "[", "MultExpr", "]", ";"}, 6},
{{"VariableExpr", "=", "{", "VariableExpr", "}", ";"}, 6},
{{"VariableExpr", "=", "{", "MultExpr", "}", ";"}, 6},
{{"VariableExpr", "=", "\"", "VariableExpr", "\"", ";"}, 6},
{{"VariableExpr", "=", "\'", "VariableExpr", "\'", ";"}, 6},
{{"VariableExpr", "=", "VariableExpr", "=", ">", "VariableExpr", ";"}, 7},
{{"VariableExpr", "=", "VariableExpr", "=", ">", "{", "VariableExpr", "}", ";"}, 9},
{{"VariableExpr", "=", "(", "MultExpr", ")", "=", ">", "{", "MultExpr", "}", ";"}, 11}
}, 13
},
{
"import", {
{{"\"", "VariableExpr", "\"", ";"}, 4},
{{"\'", "VariableExpr", "\'", ";"}, 4},
{{"{", "VariableExpr", "}", ";"}, 4},
}, 3
}
};
```
5) A Base atual de todo o modelo de JIT e AOT funcionam independentes de SO, toda camada de supervisionamento é feita de forma rootless, com cgroups e namespaces melhorando isolamento, capacidade de compilação e interpretação para micro ou macros compilações e funções distribuídas.
```javascript
OPBLOCK: import
OPCODE: "
VariableExpr: aa
OPCODE: "
OPCODE: ;
OPBLOCK: import
OPCODE: '
VariableExpr: aa
OPCODE: '
OPCODE: ;
OPBLOCK: let
VariableExpr: aa
OPCODE: =
OPCODE: (
MultExpr: a
MultExpr: ,
MultExpr: a
OPCODE: )
OPCODE: =
OPCODE: >
OPCODE: {
MultExpr: let
MultExpr: name
MultExpr: =
MultExpr: "
MultExpr: Rogerio
MultExpr: "
MultExpr: ;
MultExpr: console
MultExpr: .
MultExpr: log
MultExpr: (
MultExpr: "
MultExpr: aaa
MultExpr: "
MultExpr: )
MultExpr: ;
MultExpr: return
MultExpr: name
MultExpr: ;
OPCODE: }
OPCODE: ;
OPBLOCK: let
VariableExpr: aa
OPCODE: =
OPCODE: (
MultExpr: a
MultExpr: ,
MultExpr: a
OPCODE: )
OPCODE: =
OPCODE: >
OPCODE: {
MultExpr: let
MultExpr: name
MultExpr: =
MultExpr: "
MultExpr: Rogerio
MultExpr: "
MultExpr: ;
MultExpr: console
MultExpr: .
MultExpr: log
MultExpr: (
MultExpr: "
MultExpr: aaa
MultExpr: "
MultExpr: )
MultExpr: ;
MultExpr: return
MultExpr: name
MultExpr: ;
OPCODE: }
OPCODE: ;
OPBLOCK: let
VariableExpr: aa
OPCODE: =
OPCODE: (
MultExpr: a
MultExpr: ,
MultExpr: a
OPCODE: )
OPCODE: =
OPCODE: >
OPCODE: {
MultExpr: let
MultExpr: name
MultExpr: =
MultExpr: "
MultExpr: Rogerio
MultExpr: "
MultExpr: ;
MultExpr: console
MultExpr: .
MultExpr: log
MultExpr: (
MultExpr: "
MultExpr: aaa
MultExpr: "
MultExpr: )
MultExpr: ;
MultExpr: return
MultExpr: name
MultExpr: ;
OPCODE: }
OPCODE: ;
OPBLOCK: let
VariableExpr: aa
OPCODE: =
OPCODE: (
MultExpr: a
MultExpr: ,
MultExpr: a
OPCODE: )
OPCODE: =
OPCODE: >
OPCODE: {
MultExpr: let
MultExpr: name
MultExpr: =
MultExpr: "
MultExpr: Rogerio
MultExpr: "
MultExpr: ;
MultExpr: console
MultExpr: .
MultExpr: log
MultExpr: (
MultExpr: "
MultExpr: aaa
MultExpr: "
MultExpr: )
MultExpr: ;
MultExpr: return
MultExpr: name
MultExpr: ;
OPCODE: }
OPCODE: ;
OPBLOCK: let
VariableExpr: aa
OPCODE: =
OPCODE: (
MultExpr: a
MultExpr: ,
MultExpr: a
OPCODE: )
OPCODE: =
OPCODE: >
OPCODE: {
MultExpr: let
MultExpr: name
MultExpr: =
MultExpr: "
MultExpr: Rogerio
MultExpr: "
MultExpr: ;
MultExpr: console
MultExpr: .
MultExpr: log
MultExpr: (
MultExpr: "
MultExpr: aaa
MultExpr: "
MultExpr: )
MultExpr: ;
MultExpr: return
MultExpr: name
MultExpr: ;
OPCODE: }
OPCODE: ;
OPBLOCK: let
VariableExpr: name
OPCODE: =
OPCODE: [
MultExpr: 1
MultExpr: ,
MultExpr: 2
OPCODE: ]
OPCODE: ;

------->> Tempo: 0.000066 segundos <<-------
```