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/vcard.lua | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'lexlua/vcard.lua') diff --git a/lexlua/vcard.lua b/lexlua/vcard.lua index 52ca4035a..0ea39b284 100644 --- a/lexlua/vcard.lua +++ b/lexlua/vcard.lua @@ -44,35 +44,30 @@ local identifier = lexer.alpha^1 * lexer.digit^0 * (P('-') * lexer.alnum^1)^0 -- Extension. local extension = token(lexer.TYPE, lexer.starts_line(S('xX') * P('-') * - identifier * #S(':;'))) + identifier * #S(':;'))) -- Parameter. local parameter = token(lexer.IDENTIFIER, - lexer.starts_line(identifier * #S(':='))) + - token(lexer.STRING, identifier) * #S(':=') + lexer.starts_line(identifier * #S(':='))) + token(lexer.STRING, identifier) * + #S(':=') -- Operators. local operator = token(lexer.OPERATOR, S('.:;=')) -- Group and property. local group_sequence = token(lexer.CONSTANT, lexer.starts_line(identifier)) * - token(lexer.OPERATOR, P('.')) * - (required_property + supported_property + - lexer.token(lexer.TYPE, S('xX') * P('-') * identifier) * - #S(':;')) + token(lexer.OPERATOR, P('.')) * (required_property + supported_property + + lexer.token(lexer.TYPE, S('xX') * P('-') * identifier) * #S(':;')) -- Begin vCard, end vCard. local begin_sequence = token(lexer.KEYWORD, P('BEGIN')) * - token(lexer.OPERATOR, P(':')) * - token(lexer.COMMENT, P('VCARD')) + token(lexer.OPERATOR, P(':')) * token(lexer.COMMENT, P('VCARD')) local end_sequence = token(lexer.KEYWORD, P('END')) * - token(lexer.OPERATOR, P(':')) * - token(lexer.COMMENT, P('VCARD')) + token(lexer.OPERATOR, P(':')) * token(lexer.COMMENT, P('VCARD')) -- vCard version (in v3.0 and v4.0 must appear immediately after BEGIN:VCARD). local version_sequence = token(lexer.KEYWORD, P('VERSION')) * - token(lexer.OPERATOR, P(':')) * - token(lexer.CONSTANT, lexer.digit^1 * - (P('.') * lexer.digit^1)^-1) + token(lexer.OPERATOR, P(':')) * + token(lexer.CONSTANT, lexer.digit^1 * (P('.') * lexer.digit^1)^-1) -- Data. local data = token(lexer.IDENTIFIER, lexer.any) -- cgit v1.2.3