Parser

The parser functions and their brief description.

lispereter.parser.atom(token)

Numbers become numbers; every other token is a symbol.

Parameters:

token : str

The token to be turned to a LISP atom.

Returns:

lisp_atom : Atom

A LISP atom.

Examples

>>> atom("11")
11
>>> atom(11)
11
>>> atom("11.0")
11.0
>>> atom("begin")
'begin'
lispereter.parser.parse(program)

Read a Scheme expression from a string.

Parameters:

program : str

The expression to parse.

Returns:

expression : Exp

A Scheme expression (list/atom).

Examples

>>> parse("(begin (define r 10) (* pi (* r r)))")
['begin', ['define', 'r', 10], ['*', 'pi', ['*', 'r', 'r']]]
lispereter.parser.read_from_tokens(tokens)

Read an expression from a sequence of tokens.

Parameters:

tokens : list

A list of tokens.

Returns:

parsable : Exp

An expression to be parsed.

Examples

>>> read_from_tokens(['(', 'begin', '(', 'define', 'r', '10', ')', '(', '*', 'pi', '(', '*', 'r', 'r', ')', ')', ')'])
['begin', ['define', 'r', 10], ['*', 'pi', ['*', 'r', 'r']]]
lispereter.parser.tokenize(chars)

Convert a string of characters into a list of tokens.

Parameters:

chars : str

The input string to tokenize.

Returns:

token_list : List

A list of tokens.

Examples

>>> tokenize("(begin (define r 10) (* pi (* r r)))")
['(', 'begin', '(', 'define', 'r', '10', ')', '(', '*', 'pi', '(', '*', 'r', 'r', ')', ')', ')']