Module pl.lexer

Lexical scanner for creating a sequence of tokens from text.

lexer.scan(s) returns an iterator over all tokens found in the string s. This iterator returns two values, a token type string (such as 'string' for quoted string, 'iden' for identifier) and the value of the token.

Versions specialized for Lua and C are available; these also handle block comments and classify keywords as 'keyword' tokens. For example:

> s = 'for i=1,n do'
> for t,v in lexer.lua(s)  do print(t,v) end
keyword for
iden    i
=       =
number  1
,       ,
iden    n
keyword do

See the Guide for further discussion

Functions

scan (s, matches[, filter[, options]]) create a plain token iterator from a string or file-like object.
insert (tok, a1, a2) insert tokens into a stream.
getline (tok) get everything in a stream upto a newline.
lineno (tok) get current line number.
getrest (tok) get the rest of the stream.
get_keywords () get the Lua keywords as a set-like table.
lua (s[, filter[, options]]) create a Lua token iterator from a string or file-like object.
cpp (s[, filter[, options]]) create a C/C++ token iterator from a string or file-like object.
get_separated_list (tok[, endtoken=')'[, delim=']]) get a list of parameters separated by a delimiter from a stream.
skipws (tok) get the next non-space token from the stream.
expecting (tok, expected_type, no_skip_ws) get the next token, which must be of the expected type.


Functions

scan (s, matches[, filter[, options]])
create a plain token iterator from a string or file-like object.

Parameters:

  • s string or file a string or a file-like object with :read() method returning lines.
  • matches table an optional match table - array of token descriptions. A token is described by a {pattern, action} pair, where pattern should match token body and action is a function called when a token of described type is found.
  • filter table a table of token types to exclude, by default {space=true} (optional)
  • options table a table of options; by default, {number=true,string=true}, which means convert numbers and strip string quotes. (optional)
insert (tok, a1, a2)
insert tokens into a stream.

Parameters:

  • tok a token stream
  • a1 a string is the type, a table is a token list and a function is assumed to be a token-like iterator (returns type & value)
  • a2 string a string is the value
getline (tok)
get everything in a stream upto a newline.

Parameters:

  • tok a token stream

Returns:

    a string
lineno (tok)
get current line number.

Parameters:

  • tok a token stream

Returns:

    the line number. if the input source is a file-like object, also return the column.
getrest (tok)
get the rest of the stream.

Parameters:

  • tok a token stream

Returns:

    a string
get_keywords ()
get the Lua keywords as a set-like table. So res["and"] etc would be true.

Returns:

    a table
lua (s[, filter[, options]])
create a Lua token iterator from a string or file-like object. Will return the token type and value.

Parameters:

  • s string the string
  • filter table a table of token types to exclude, by default {space=true,comments=true} (optional)
  • options table a table of options; by default, {number=true,string=true}, which means convert numbers and strip string quotes. (optional)
cpp (s[, filter[, options]])
create a C/C++ token iterator from a string or file-like object. Will return the token type type and value.

Parameters:

  • s string the string
  • filter table a table of token types to exclude, by default {space=true,comments=true} (optional)
  • options table a table of options; by default, {number=true,string=true}, which means convert numbers and strip string quotes. (optional)
get_separated_list (tok[, endtoken=')'[, delim=']])
get a list of parameters separated by a delimiter from a stream.

Parameters:

  • tok the token stream
  • endtoken string end of list. Can be '\n' (default ')')
  • delim string separator (default ')

Returns:

    a list of token lists.
skipws (tok)
get the next non-space token from the stream.

Parameters:

  • tok the token stream.
expecting (tok, expected_type, no_skip_ws)
get the next token, which must be of the expected type. Throws an error if this type does not match!

Parameters:

  • tok the token stream
  • expected_type string the token type
  • no_skip_ws boolean whether we should skip whitespace
generated by LDoc 1.5.0