Supported languages
Smalto ships with grammars for 30 languages. Each language module exports a grammar() function.
Language list
| Language | Module | Extends |
|---|---|---|
| Bash | smalto/languages/bash |
|
| C | smalto/languages/c |
clike |
| C++ | smalto/languages/cpp |
C |
| CSS | smalto/languages/css |
|
| Dart | smalto/languages/dart |
clike |
| Dockerfile | smalto/languages/dockerfile |
|
| Elixir | smalto/languages/elixir |
|
| Erlang | smalto/languages/erlang |
|
| Gleam | smalto/languages/gleam |
|
| Go | smalto/languages/go |
clike |
| Haskell | smalto/languages/haskell |
|
| HTML | smalto/languages/html |
|
| Java | smalto/languages/java |
clike |
| JavaScript | smalto/languages/javascript |
clike |
| JSON | smalto/languages/json |
|
| Kotlin | smalto/languages/kotlin |
clike |
| Lua | smalto/languages/lua |
|
| Markdown | smalto/languages/markdown |
|
| PHP | smalto/languages/php |
clike |
| Python | smalto/languages/python |
|
| Ruby | smalto/languages/ruby |
clike |
| Rust | smalto/languages/rust |
|
| Scala | smalto/languages/scala |
Java |
| SQL | smalto/languages/sql |
|
| Swift | smalto/languages/swift |
clike |
| TOML | smalto/languages/toml |
|
| TypeScript | smalto/languages/typescript |
JavaScript |
| XML | smalto/languages/xml |
|
| YAML | smalto/languages/yaml |
|
| Zig | smalto/languages/zig |
Usage
Import the language module and call grammar():
import smalto
import smalto/languages/rust
let html = smalto.to_html("fn main() {}", rust.grammar())
Inheritance
Some grammars extend a parent language. For example, TypeScript extends JavaScript, and C++ extends C. The child grammar’s rules are prepended to the parent’s, giving them higher match priority. Inheritance is resolved automatically when you call grammar().
Adding language support
To highlight a language not in the list, define a custom Grammar. See Grammars for details on building custom grammars.