39d77a8cae
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>
31 lines
560 B
Plaintext
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
|