7557a34c89
`extras: $ => []` in the cart grammar made the parser fail at byte 0 on any whitespace-only or empty line before `pico-8 cartridge //...`. Real PICO-8 carts always start with the header at byte 0 so this rarely surfaced in production, but it ( a ) broke the `tree-sitter test` corpus harness, which prepends a newline to each fixture, and ( b ) would mis-flag a hand-edited cart that gained an accidental blank line up top. Fix: prefix the `cartridge` rule with `repeat($._blank_line)` and add a hidden `_blank_line` token matching `[ \t]*\n`. Junk content before the header ( a non-blank, non-magic line ) still produces an ERROR. Restores the test corpus that was dropped in v0.1 ( previously failing on this same edge case ) and adds a fixture for the unknown_section fallback while the corpus is being rebuilt. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
110 lines
1.6 KiB
Plaintext
110 lines
1.6 KiB
Plaintext
==================
|
|
empty cart skeleton
|
|
==================
|
|
|
|
pico-8 cartridge // http://www.pico-8.com
|
|
version 42
|
|
__lua__
|
|
__gfx__
|
|
__map__
|
|
__sfx__
|
|
__music__
|
|
|
|
---
|
|
|
|
(cartridge
|
|
(header)
|
|
(version)
|
|
(section (lua_section (lua_marker)))
|
|
(section (gfx_section (gfx_marker)))
|
|
(section (map_section (map_marker)))
|
|
(section (sfx_section (sfx_marker)))
|
|
(section (music_section (music_marker))))
|
|
|
|
==================
|
|
cart with lua content
|
|
==================
|
|
|
|
pico-8 cartridge // http://www.pico-8.com
|
|
version 42
|
|
__lua__
|
|
function _draw()
|
|
cls()
|
|
end
|
|
__gfx__
|
|
00000000
|
|
|
|
---
|
|
|
|
(cartridge
|
|
(header)
|
|
(version)
|
|
(section
|
|
(lua_section
|
|
(lua_marker)
|
|
(lua_content
|
|
(line)
|
|
(line)
|
|
(line))))
|
|
(section
|
|
(gfx_section
|
|
(gfx_marker)
|
|
(body
|
|
(line)))))
|
|
|
|
==================
|
|
lua identifier resembling section marker
|
|
==================
|
|
|
|
pico-8 cartridge // http://www.pico-8.com
|
|
version 42
|
|
__lua__
|
|
local __foo__ = 1
|
|
local s = "__lua__"
|
|
__gfx__
|
|
00
|
|
|
|
---
|
|
|
|
(cartridge
|
|
(header)
|
|
(version)
|
|
(section
|
|
(lua_section
|
|
(lua_marker)
|
|
(lua_content
|
|
(line)
|
|
(line))))
|
|
(section
|
|
(gfx_section
|
|
(gfx_marker)
|
|
(body
|
|
(line)))))
|
|
|
|
==================
|
|
unknown section name
|
|
==================
|
|
|
|
pico-8 cartridge // http://www.pico-8.com
|
|
version 42
|
|
__lua__
|
|
__future_section__
|
|
opaque body
|
|
__gfx__
|
|
00
|
|
|
|
---
|
|
|
|
(cartridge
|
|
(header)
|
|
(version)
|
|
(section (lua_section (lua_marker)))
|
|
(section
|
|
(unknown_section
|
|
(section_marker)
|
|
(body (line))))
|
|
(section
|
|
(gfx_section
|
|
(gfx_marker)
|
|
(body (line)))))
|