vimsheet.formula.parser

Recursive-descent parser — converts a Token list into an AST.

exception vimsheet.formula.parser.ParseError[source]

Bases: SyntaxError

class vimsheet.formula.parser.Parser(tokens)[source]

Bases: object

Parse a list of Tokens produced by the tokenizer.

Usage:

from vimsheet.formula.tokenizer import tokenize
from vimsheet.formula.parser import Parser

tokens = tokenize("A1 + SUM(B1:B5)")
ast = Parser(tokens).parse()
Parameters:

tokens (list[Token])

__init__(tokens)[source]
Parameters:

tokens (list[Token])

Return type:

None

parse()[source]

Parse and return the root expression node.

Return type:

NumberNode | StringNode | BoolNode | CellRefNode | RangeRefNode | ColRangeRefNode | SheetCellRefNode | SheetRangeRefNode | NameNode | UnaryNode | BinaryNode | PercentNode | FuncCallNode

vimsheet.formula.parser.parse_formula(source)[source]

Convenience: tokenize and parse source (without leading ‘=’).

Raises ParseError on syntax errors.

Parameters:

source (str)

Return type:

NumberNode | StringNode | BoolNode | CellRefNode | RangeRefNode | ColRangeRefNode | SheetCellRefNode | SheetRangeRefNode | NameNode | UnaryNode | BinaryNode | PercentNode | FuncCallNode