MF07 Language Extension (CorpLang)
Extensão do VS Code para a linguagem CorpLang (MF07), com suporte completo a análise lexical, autocompletar contextual, documentação hover, signature help e formatação de código.
Recursos Principais
Autocomplete Contextual
Cobertura total de:
- Keywords:
class, interface, intent, async intent, var, if, for, while, return, import, throw, await
- Tipos primitivos:
int, float, string, bool, dict, list, void
- Genéricos:
List<T>, Map<K,V>, Set<T>, Optional<T>, Union[T1,T2], Matrix<T>
- Funções nativas:
print, log, type, len, parseInt
- Modificadores:
private, public, protected, static, extends, implements, this, super, new
Sugestões sensíveis ao contexto:
- Após
new
- Após
.
- Após
import
- Após
: (anotação de tipo)
- Dentro de classes (membros, construtores, estáticos)
Módulos Core Disponíveis
A extensão expõe APIs internas de:
- Logger
- Math
- List, Map, Set, Matrix, EmbedList
- FileSystem, Path
- Requests (HTTP)
- Socket (TCP)
- Exceptions
- DateTime
- Optional
- StringHelpers
- JSON
- Object utilities
- Collections
Cada módulo possui hover documentation, assinatura de métodos e validações integradas.
Hover Documentation
Exibe:
- Definição
- Assinatura
- Campos disponíveis
- Exemplos de uso
Signature Help
Acionado ao digitar ( em funções, construtores e métodos.
Syntax Highlighting
Baseado em TextMate:
- Keywords
- Tipos genéricos
- Literais e números
- Strings com interpolação (suportado em vários delimitadores):
"Hello {name}", 'Hello {name}', `Hello {name}`, e ´Hello {name}´
- Comentários (
#, /* */)
Docstrings
A extensão obtém docstrings diretamente do código-fonte:
""" ... """
''' ... '''
# sequência
/* ... */
Docstrings são incluídas no autocomplete, hover e signature help.
Snippets
Snippets para classes, construtores, métodos, funções tipadas, loops, try-catch e coleções.
Organiza:
- Indentação
- Espaços entre operadores
- Espaços após keywords
- Blocos
{}
Arquitetura Interna
Visão geral dos módulos da extensão:
┌───────────────────────┐
│ VS Code Host API │
└───────────┬───────────┘
│
┌──────────────┴──────────────┐
│ Extension │
└──────────────┬──────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
│ │ │
┌─────┴─────┐ ┌───────┴────────┐ ┌───────┴────────┐
│ Completion│ │ Hover Provider │ │ Signature Help │
└─────┬─────┘ └───────┬────────┘ └───────┬────────┘
│ │ │
│ │ │
│ ┌─────────────────┴──────────────────┐ │
│ │ Language Features Registry │ │
│ └─────────────────┬──────────────────┘ │
│ │ │
│ │ │
┌─────┴──────┐ ┌─────────┴──────────┐ ┌─────────┴──────────┐
│ Parser/AST │ │ Docstring Engine │ │ Type Inference │
└────────────┘ └─────────┬──────────┘ └─────────┬──────────┘
│ │
┌───────────┴─────────────┐ ┌─────────┴──────────┐
│ Syntax Highlighter │ │ Formatter │
└──────────────────────────┘ └────────────────────┘
Exemplos
Autocomplete:
var list = new L|
Hover:
var count: int # mostra tipo e documentação
Signature:
print(|
Interpolação suportada:
print("User: {user.name}")
Estrutura do Projeto
MF07/
├── src/
│ ├── extension.ts
│ ├── completion.ts
│ ├── hover.ts
│ ├── signatureHelp.ts
│ └── formatter.ts
├── syntaxes/
│ └── language.tmLanguage.json
├── language-features.json
├── language-configuration.json
├── package.json
└── example.mp
Build e Execução
npm install
npm run compile
npm run watch
No VS Code, pressione F5 para iniciar em modo de desenvolvimento.
Licença
MIT License.
| |