Files
kistaro 39d77a8cae v0.2: Pico-8 Lua dialect grammar and language
Reorganize into grammars/<name>/ subdirs ( Zed's [grammars.*] supports
a `path` field, so both grammars ship from this repo without a sibling-
repo split ). Vendor tree-sitter-lua as the fork base for tree-sitter-
pico8-lua; upstream MIT license preserved at grammars/pico-8-lua/
UPSTREAM-LICENSE.md.

Dialect features added: != as ~= alias, \ integer divide, ^^ binary xor,
>>> / <<> / >>< shifts and rotates, compound-assignment statements,
memory peek prefixes @ % $ (% coexists with binary modulo), single-line
`if (cond) stmt [else stmt]` and `while (cond) stmt`, statement-level
print shorthand ?, and `#include path` directives. Identifier rule no
longer accepts ! ? @ $ ( upstream did ).

Pico-8 Lua language ( languages/pico-8-lua/, suffix .p8lua ) ships
highlights with the full ~110 PICO-8 builtins as @function.builtin.
The cart injection now hands __lua__ bodies to pico-8-lua, so .p8 carts
and bare .p8lua files share the dialect-aware grammar. Examples updated
to exercise the dialect end-to-end.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 12:50:41 -07:00

31 lines
560 B
Plaintext

-- shared.p8lua: included into hello.p8 via #include
-- demonstrates Pico-8 dialect features outside a __lua__ section.
local x, y = 64, 64
function move()
if (btn(0)) x-=1
if (btn(1)) x+=1
if (btn(2)) y-=1
if (btn(3)) y+=1
x = mid(0, x, 127)
y = mid(0, y, 127)
end
function draw_blob()
cls(1)
circfill(x, y, 5, 7)
?"x="..x..",y="..y, 0, 0, 7
end
-- peek/poke via prefix shorthands
function sweep_palette()
for i=0,15 do
poke(0x5f10+i, %0x5f10 ^^ i)
end
end
-- single-line while with compound assignment body
local i = 0
while (i < 8) i += 1