props.lua (958B)
- -- Copyright 2006-2024 Mitchell. See LICENSE.
- -- Props LPeg lexer.
- local lexer = lexer
- local P, S = lpeg.P, lpeg.S
- local lex = lexer.new(..., {lex_by_line = true})
- -- Identifiers.
- lex:add_rule('identifier',
- lex:tag(lexer.IDENTIFIER, (lexer.alpha + S('.-_')) * (lexer.alnum + S('.-_')^0)))
- -- Colors.
- local xdigit = lexer.xdigit
- lex:add_rule('color',
- lex:tag(lexer.NUMBER, '#' * xdigit * xdigit * xdigit * xdigit * xdigit * xdigit))
- -- Comments.
- lex:add_rule('comment', lex:tag(lexer.COMMENT, lexer.to_eol('#')))
- -- Equals.
- lex:add_rule('equals', lex:tag(lexer.OPERATOR, '='))
- -- Strings.
- local sq_str = lexer.range("'")
- local dq_str = lexer.range('"')
- lex:add_rule('string', lex:tag(lexer.STRING, sq_str + dq_str))
- -- Variables.
- lex:add_rule('variable',
- lex:tag(lexer.OPERATOR, '$(') * lex:tag(lexer.VARIABLE, (lexer.nonnewline - lexer.space - ')')^0) *
- lex:tag(lexer.OPERATOR, ')'))
- lexer.property['scintillua.comment'] = '#'
- return lex