From fad15f79b1230b3076be515d6894c8919562809b Mon Sep 17 00:00:00 2001 From: mitchell Date: Sat, 25 Apr 2020 16:26:31 -0400 Subject: Reformatted Lua LPeg lexers and added new convenience functions and pattern. `lexer.range()` replaces `lexer.delimited_range()` and `lexer.nested_pair()`. `lexer.to_eol()` replaces `patt * lexer.nonnewline^0` constructs. `lexer.number` replaces `lexer.float + lexer.integer`. Also added unit tests for lexer functions. --- lexlua/man.lua | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'lexlua/man.lua') diff --git a/lexlua/man.lua b/lexlua/man.lua index efe765480..3a875f6b9 100644 --- a/lexlua/man.lua +++ b/lexlua/man.lua @@ -11,19 +11,16 @@ local lex = lexer.new('man') lex:add_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1)) -- Markup. -lex:add_rule('rule1', token(lexer.STRING, '.' * ('B' * P('R')^-1 + - 'I' * P('PR')^-1) * - lexer.nonnewline^0)) -lex:add_rule('rule2', token(lexer.NUMBER, '.' * S('ST') * 'H' * - lexer.nonnewline^0)) +lex:add_rule('rule1', token(lexer.STRING, '.' * + lexer.to_eol('B' * P('R')^-1 + 'I' * P('PR')^-1))) +lex:add_rule('rule2', token(lexer.NUMBER, lexer.to_eol('.' * S('ST') * 'H'))) lex:add_rule('rule3', token(lexer.KEYWORD, P('.br') + '.DS' + '.RS' + '.RE' + - '.PD')) + '.PD')) lex:add_rule('rule4', token(lexer.LABEL, '.' * (S('ST') * 'H' + '.TP'))) lex:add_rule('rule5', token(lexer.VARIABLE, '.B' * P('R')^-1 + - '.I' * S('PR')^-1 + - '.PP')) + '.I' * S('PR')^-1 + '.PP')) lex:add_rule('rule6', token(lexer.TYPE, '\\f' * S('BIPR'))) lex:add_rule('rule7', token(lexer.PREPROCESSOR, lexer.starts_line('.') * - lexer.alpha^1)) + lexer.alpha^1)) return lex -- cgit v1.2.3