16. Complete Reference
A full cheat-sheet of every keyword, operator, and built-in function in STencil.
Keywords
let mut var func return if elif else while for in loop
break continue class model new this stencil import try catch
true false null and or not
Literals
- int:
42,-7, hex0xFF(= 255) - float:
3.14,4.0 - string:
"hi",'hi', f-stringf"x={1+1}" - bool:
truefalse• null:null - list:
[1, 2, 3]• dict:{ "k": v }
Operators
- arithmetic:
+ - * / % - comparison:
== != < <= > >= - logic:
&& || !(aliasesandornot) - ternary:
cond ? a : b - membership:
x in coll - range:
a..b(inloop i in a..b) - stencil stamp:
Name!(args)(single),Name!*list(map) - index/member:
x[i],obj.field,obj.method()
Statements
let/mut/var name = expr · name = expr · if/elif/else · while · for(init;cond;inc) ·
for x in iter · for i in a..b · loop i in a..b · loop {} · break · continue ·
func f(..) {} · f(..) => expr · class C {} · model M {} · stencil S(..) {} ·
return · try/catch · import "..." · >> expr (= print)
Built-in functions
Core / convert
| Function | Description |
|---|---|
print(...) |
print values space-separated + newline |
input(prompt?) |
read a line from stdin |
type(x) |
type name as string |
len(x) |
length of string/list/dict |
str(x) / repr(x) |
to string |
int(x) float(x) bool(x) |
convert |
list(...) dict() |
construct |
range(n) / range(a,b) / range(a,b,step) |
list of ints |
exit(code) |
stop the program |
Math
abs round floor ceil pow(a,b) sqrt sin cos tan log log10 exp
min(list-or-args) max(list-or-args) sum(list)
Random
random() / rand() (0..1) · randint(a,b) (inclusive) · choice(list) · shuffle(list)
Strings
upper lower trim split(s,sep) join(list,sep) contains(coll,x) reversed(list-or-string) sorted(list)
Methods: s.upper() s.lower() s.len() · index s[i]
Lists (methods)
a.push(x) a.append(x) a.pop() a.len() · index read/write a[i] / a[i] = v
Dicts (methods)
d.keys() d.values() d.has(k) d.len() · d[k] / d[k] = v
Files
read_file(p) write_file(p,text) append_file(p,text) file_exists(p) delete_file(p) list_dir(p) make_dir(p)
OS
args() env(name) cwd() exec(cmd) exit(code)
JSON
json_parse(str) json_str(value) json_pretty(value)
Regex
regex_match(p,t) regex_find(p,t) regex_find_all(p,t) regex_replace(p,t,repl)
Date / time
now() (ms) timestamp() (s) date() date_format(fmt) ticks() (ms since start)
Networking
http_get(url, headers?) http_post(url,body,content_type_or_headers?) ·
serve(port,handler) (single-threaded, sequential) ·
tcp_connect(host,port) tcp_send(id,data) tcp_recv(id) tcp_close(id)
Database (SQLite)
db_open(path) db_exec(sql, params?) db_query(sql, params?) — bind ? placeholders
with a params list to avoid SQL injection.
Terminal graphics
game_init() game_end() clear() draw(x,y,text) / at(x,y,text) color(text,name)
sleep(ms) ticks() screen_size() key()
Pixel window graphics
window_open(w,h,title) fill(color) pixel(x,y,color) rect(x,y,w,h,color)
window_update() window_is_open() window_key(name) window_mouse() window_mouse_down() window_close()
Sound
beep(freq_hz, ms)
Colors (names for color/fill/rect/pixel)
red green blue white black yellow cyan magenta gray orange — or an int like 0x101828.
Key names (key(), window_key())
up down left right space enter esc and letters w a s d q e r f (more for key()).
Constants
math.pi, math.e
CLI
stencil file.st · stencil -c "code" · stencil (REPL) · stencil build file.st -o out.exe ·
stencil init · stencil install · stencil --version · stencil --help
Notes
- Type annotations (
let x: int = 5,func f(a: string)) are documentation only. STencil is dynamically typed by design — annotations are never enforced. - Error messages — runtime, syntax, CLI, and installer — are all in English.
serveis single-threaded and sequential; it's fine for small apps and APIs but will bottleneck under high traffic.
Kitteniverse Studios