vis
a vi-like editor based on Plan 9's structural regular expressions
git clone https://9o.is/git/vis.git
pico8.lua
(971B)
1 -- Copyright 2016-2025 Alejandro Baez (https://keybase.io/baez). See LICENSE.
2 -- PICO-8 lexer.
3 -- http://www.lexaloffle.com/pico-8.php
4
5 local lexer = lexer
6 local word_match = lexer.word_match
7 local P, S = lpeg.P, lpeg.S
8
9 local lex = lexer.new(...)
10
11 -- Keywords
12 lex:add_rule('keyword',
13 lex:tag(lexer.KEYWORD, lexer.word_match('__gff__ __map__ __sfx__ __music__')))
14
15 -- Identifiers
16 lex:add_rule('identifier', lex:tag(lexer.IDENTIFIER, lexer.word))
17
18 -- Comments
19 lex:add_rule('comment', lex:tag(lexer.COMMENT, lexer.to_eol('//', true)))
20
21 -- Numbers
22 lex:add_rule('number', lex:tag(lexer.NUMBER, lexer.integer))
23
24 -- Operators
25 lex:add_rule('operator', lex:tag(lexer.OPERATOR, '_'))
26
27 -- Embed Lua into PICO-8.
28 local lua = lexer.load('lua')
29 local lua_start_rule = lex:tag(lexer.KEYWORD, word_match('__lua__'))
30 local lua_end_rule = lex:tag(lexer.KEYWORD, word_match('__gfx__'))
31 lex:embed(lua, lua_start_rule, lua_end_rule)
32
33 lexer.property['scintillua.comment'] = '//'
34
35 return lex