예제 #1
0
파일: parser.py 프로젝트: lhbelfanti/set
 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
예제 #2
0
	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: