Parser¶
The parser functions and their brief description.
-
lispereter.parser.
atom
(token: str) -> (<class 'str'>, (<class 'int'>, <class 'float'>))¶ Numbers become numbers; every other token is a symbol.
- Args:
- token (str): A symbol or a number
>>> atom("11") 11 >>> atom(11) 11
>>> atom("11.0") 11.0
>>> atom("begin") 'begin'
-
lispereter.parser.
parse
(program: str) -> ((<class 'str'>, (<class 'int'>, <class 'float'>)), <class 'list'>)¶ Read a Scheme expression from a string.
- Args:
- program (str): A given Scheme expression
>>> parse("(begin (define r 10) (* pi (* r r)))") ['begin', ['define', 'r', 10], ['*', 'pi', ['*', 'r', 'r']]]
-
lispereter.parser.
read_from_tokens
(tokens: list) -> ((<class 'str'>, (<class 'int'>, <class 'float'>)), <class 'list'>)¶ Read an expression from a sequence of tokens.
- Args:
- tokens (list): A list of tokens generated by tokenize(chars)
>>> read_from_tokens(['(', 'begin', '(', 'define', 'r', '10', ')', '(', '*', 'pi', '(', '*', 'r', 'r', ')', ')', ')']) ['begin', ['define', 'r', 10], ['*', 'pi', ['*', 'r', 'r']]]
-
lispereter.parser.
tokenize
(chars: str) → list¶ Convert a string of characters into a list of tokens.
- Args:
- chars (str): The input to be tokenized.
>>> tokenize("(begin (define r 10) (* pi (* r r)))") ['(', 'begin', '(', 'define', 'r', '10', ')', '(', '*', 'pi', '(', '*', 'r', 'r', ')', ')', ')']