kong.lexer — Tokenizer

kong.lexer.TOKEN_PATTERN = <_sre.SRE_Pattern object at 0x32e6fd0>

The re pattern that matches to tokens.

kong.lexer.tokenize(stream)

Makes tokens from input stream.

>>> t = lambda s: list(tokenize(s))
>>> t(u'a<-func  (123)')  
[kong.lexer.Token('identifier', u'a', 0),
 kong.lexer.Token('arrow', u'<-', 1),
 kong.lexer.Token('identifier', u'func', 3),
 kong.lexer.Token('space', u'  ', 7),
 kong.lexer.Token('parenthesis', u'(', 9),
 kong.lexer.Token('number', u'123', 10),
 kong.lexer.Token('parenthesis', u')', 13)]

It supports streaming as well:

>>> stream = [u'a(12', u'3)\nb<', u'-c * 123']
>>> t(stream)  
[kong.lexer.Token('identifier', u'a', 0),
 kong.lexer.Token('parenthesis', u'(', 1),
 kong.lexer.Token('number', u'123', 2),
 kong.lexer.Token('parenthesis', u')', 5),
 kong.lexer.Token('newline', u'\n', 6),
 kong.lexer.Token('identifier', u'b', 7),
 kong.lexer.Token('arrow', u'<-', 8),
 kong.lexer.Token('identifier', u'c', 10),
 kong.lexer.Token('space', u' ', 11),
 kong.lexer.Token('identifier', u'*', 12),
 kong.lexer.Token('space', u' ', 13),
 kong.lexer.Token('number', u'123', 14)]
Parameters:stream (collections.Iterable) – input stream
Returns:Token list
Return type:collections.Iterable
class kong.lexer.Token(tag, string, offset)

A token that contains tag, string and offset.

tag

(basestring) The type of token e.g. 'arrow', 'colon'.

string

(basestring) The token string.

offset

(numbers.Integral) The token offset.

get_syntax_error(message=None)

Makes a SyntaxError with its offset.

Parameters:message (basestring) – an optional error message
Returns:an SyntaxError instance
Return type:SyntaxError
exception kong.lexer.SyntaxError(offset, message=None)

An exception that rises when the syntax is invalid.

offset = None

(numbers.Integral) The errored offset of the string.

get_line(string)

Gets the errored line number from the code string.

Parameters:string (basestring) – code string
Returns:0-based line number
Return type:numbers.Integral
get_column(string)

Gets the errored column number of the line from the code string.

Parameters:string (basestring) – code string
Returns:0-based column number
Return type:numbers.Integral