-
Notifications
You must be signed in to change notification settings - Fork 1
CompilerEvolution
Este documento descreve o caminho percorrido no desenvolvimento do compilador do eQuantic.UI, focando na transição de um transpiler sintático simples para um motor de compilação robusto e ciente da semântica.
Inicialmente, o compilador operava através de substituições diretas baseadas em tokens.
- Limitação: Era difícil lidar com sobrecargas de métodos ou extensões C# complexas.
- Resultado: Código TypeScript que às vezes requeria ajustes manuais.
Introduzimos o CSharpToJsConverter baseado em estratégias (IConverterStrategy).
- Melhoria: Cada elemento da árvore sintática (AST) passou a ter uma lógica de conversão isolada e testável.
-
Destaque: Implementação de suporte nativo a construções como
try-catch,switche expressões lambda.
A integração com o Roslyn Semantic Model permitiu que o compilador entendesse o "significado" do código, não apenas a sua forma.
-
Heurísticas de Contexto: O compilador agora sabe diferenciar quando uma variável é um
Parameter(mantém o nome) ou umaProperty(adicionathis.). -
Mapeamento Declarativo: Substituímos os grandes blocos de
switchpor um registro de mapeamento configurável.
Para garantir que o código executado no browser seja estável, o compilador impõe limites claros:
-
Divisão Servidor/Cliente:
-
Server Components: Podem usar
System.IO,DbContext, e APIs de banco de dados. - Client Components: Restritos a lógica de UI, estado e APIs portáveis.
- Bloqueio: O compilador rejeita o uso de APIs proibidas (como acesso direto a arquivos) em componentes que serão enviados para o browser.
-
Server Components: Podem usar
O próximo grande salto evolutivo focará no Type-Safe Bridge automático, onde o compilador gerará não apenas a chamada da ServerAction, mas também garantirá que os tipos de retorno e argumentos estejam perfeitamente sincronizados entre C# e TypeScript em tempo de compilação.