Description
This module exports several Lua lexical patterns, all implemented in LPeg. None of them have captures.Dependencies
Example
The following example lists all the tokens in a Lua script:
local lpeg = require 'lpeg'
local scanner = require 'leg.scanner'
 -- this pattern captures all tokens, ignores spaces and comments,
 -- and matches with end of file, giving an error otherwise
patt = (lpeg.C(scanner.TOKEN) + scanner.SPACE + scanner.COMMENT)^0
    * (scanner.EOF + scanner.error'invalid character')
patt = lpeg.Ct(patt)
 -- opens the file passed as parameter and tries to match with patt
f = assert(io.open(arg[1]))
 -- a table storing all the tokens
ALL = patt:match(f:read'*a')
f:close()
 -- dumps all tokens on screen
for _, tk in ipairs(ALL) do
   print(tk)
end
Variables
| ANY = LPeg pattern | Matches any token, comment or space. | 
| BANG = LPeg pattern | Matches UNIX's shebang (e.g. #!/usr/bin/lua). | 
| BOF = LPeg pattern | Matches the beginning of a file. | 
| COMMENT = LPeg pattern | Matches any type of comment. | 
| EOF = LPeg pattern | Matches the end of a file. | 
| IDENTIFIER = LPeg pattern | Matches any Lua identifier. | 
| IGNORED = LPeg pattern | Matches everything ignored by the parser. | 
| KEYWORD = LPeg pattern | A pattern which matches any Lua keyword. | 
| keywords = {}  | A table with Lua keyword-matching patterns, with the keywords in uppercase as keys. Examples: keywords.WHILE,keywords['ELSEIF']. | 
| NUMBER = LPeg pattern | Matches any Lua number. | 
| SPACE = LPeg pattern | Matches any space character. | 
| STRING = LPeg pattern | Matches any Lua string. | 
| SYMBOL = LPeg pattern | A pattern which matches any Lua symbol. | 
| symbols = {}  | A table with Lua symbol-matching patterns, with the symbols themselves as keys. Examples: symbols['{'],symbols['+']. | 
| TOKEN = LPeg pattern | Matches any Lua identifier, keyword, symbol, number or string. | 
Functions
|  comment2text (comment)  | Strips all prefixing --and enclosing--[=*[from comment tokens. | 
|  error (msg)  | Returns a function which throws lexical errors. | 
|  string2text (str)  | Strips all enclosing ',", and[=*[from string tokens, and processes escape characters. | 
|  text2comment (text)  | Encloses the text with comment markers. | 
|  text2string (text)  | Transforms a text into a syntactically valid Lua string. Similar to string.formatwith the'%q'option, but inserting escape numbers and escape codes where applicable. | 
comment2text (comment)
		- Strips all prefixing 
- comment: the comment to strip.
- the text without comment marking syntax.
-- and enclosing --[=*[ from comment tokens.
Parameters:error (msg)
		- Returns a function which throws lexical errors.
Parameters:
- msg: the message to be concatenated to the error message.
- A function built to be used as a LPeg pattern, which will throw an error when matched.
patt = intended_pattern^0 * (EOF + error'character after EOF')It may also be used as a normal function:
function (subject, i) if bad_condition then error'bad condition'(subject, i) end end
string2text (str)
		- Strips all enclosing 
- str: the string to strip.
- the text without string enclosers.
', ", and [=*[ from string tokens, and processes escape characters.
Parameters:text2comment (text)
		- Encloses the text with comment markers.
Parameters:
- text: the text to comment.
- the text with comment marking syntax.
text2string (text)
		- Transforms a text into a syntactically valid Lua string. Similar to 
- text: a string containing the text.
- a string, similar to string.format with option '%q'.
string.format with the '%q' option, but inserting escape numbers and escape codes where applicable.
Parameters