Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lemon Code (LC-lang)

Lemon Code (LC-lang) é uma linguagem experimental escrita inteiramente em Lua. O repositório e deliberadamente modular: compilador, AST, análise semântica, runtime, Lemon Studio, backends, formatter, LSP e testes ficam em módulos independentes.

O projeto possui mais de 100 arquivos Lua, para que cada responsabilidade possa crescer sem concentrar toda a linguagem em um unico arquivo.

Uso

O único requisito e Lua 5.1+ ou LuaJIT. No Windows, use o luajit disponível no ambiente.

# Mostrar a arvore sintática
luajit src/lc.lua parse examples/basics.lc

# Validar um arquivo
luajit src/lc.lua check examples/lemon_studio_app.lc

# Executar um script ou gerar o manifesto de um app Lemon Studio
luajit src/lc.lua run examples/lemon_studio_app.lc

# Validar uma especificação de pacote Lemon
luajit src/lc.lua lspec nome_do_pacote-1.0.lspec

# Executar a suíte de testes
luajit tests/run.lua

Exemplo de aplicativo

@import <LemonStudioFramework>
@import <Color::Hex>

pub fn app<LSApp>(
  name = @[LSString]"Meu aplicativo"
  version = @[[LSDouble || LSTriple] -> format = f"v{LSDouble || LSTriple}"]v1.0
  identifier = @[[LSString] -> path = String::isPath(True)]"com.lemon.meuapp"
) -> Result(LSPlatform::Mobile("Android")) {
  pub fn widget<LSWidget>(let el) {
    LSWidget(|el| -> {
      let text = @new text(
        text = "Hello World"
        header = "p"
        color = Hex::new("#007DFF")
      )
    })
  }
}

O comando run reconhece esse formato e devolve um manifesto JSON com metadados do app, plataforma e arvore de widgets. Uma integração real com Android e o próximo passo natural: ela pode consumir esse manifesto como IR (representação intermediaria).

Tipos Lemon Studio

Tipo Uso
LSInt inteiro
LSFloat ponto flutuante simples
LSDouble ponto flutuante de dupla precisao / versao v1.0
LSTriple versao com tres partes, como v1.0.0
LSString texto
LSBoolean True ou False

Veja a gramática, a especificação .lspec, o mapa de módulos e os arquivos em examples.

VS Code

A extensão pronta para o Visual Studio Marketplace está em extensions/vscode-lc-lang. Ela adiciona suporte a .lc e .lspec, realce de sintaxe, configuração de linguagem e snippets. Consulte as instruções de empacotamento e publicação no README da extensão.

Neovim

O plugin nativo do Neovim está em extensions/nvim-lc-lang. Ele detecta .lc e .lspec, fornece sintaxe, indentação, comentários, comandos e integração opcional com o LSP. Veja as instruções para lazy.nvim e packer.nvim no README do plugin.

About

The modular lang: Lemon Code Language

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages