def buildTokenizer(self, code): tk = Tokenizer() tk.add("\\[", self.Token.OPEN_BRACKET) tk.add("\\]", self.Token.CLOSE_BRACKET) tk.add(",", self.Token.COMMA) tk.add("=", self.Token.ASIGNATION) tk.add("[0-9]+", self.Token.NUMBER) tk.tokenize(code) return tk
ROOT = 100 EPSILON = 101 EXPRESSION = 102 SUM_OP = 103 SIGNED_TERM = 104 TERM = 105 TERM_OP = 106 SIGNED_FACTOR = 107 FACTOR = 108 FACTOR_OP = 109 ARGUMENT = 110 VALUE = 111 # define terminals tokenizer = Tokenizer() tokenizer.add(r"sin|cos|tan|exp|sqrt", Symbol.FUNCTION) tokenizer.add(r"\(", Symbol.OPEN_PAREN) tokenizer.add(r"\)", Symbol.CLOSE_PAREN) tokenizer.add(r"[+-]", Symbol.PLUSMINUS) tokenizer.add(r"[*/]", Symbol.MULTDIV) tokenizer.add(r"[\^]", Symbol.RAISED) tokenizer.add(r"[0-9]+", Symbol.NUMBER) class AST_node: def __init__(self, symbol, token=None): self.token = token self.symbol = symbol self.children = [] def add(self, node): if node != None: