r"""\d+""" try: value = int(t.value) if not (0 <= value <= 1): raise ValueError('currently only 0, 1 are supported') t.value = Number(value) except ValueError: print("Integer value too large %d", t.value) t.value = '0' return t def t_newline(t): r"""\n+""" t.lexer.lineno += t.value.count("\n") def t_error(t): if t: print("Illegal character '%s'" % t.value[0]) t.lexer.skip(1) else: print('Error somewhere, current token is None') assert 0 import third_party.ply.lex as lex anzu_lexer = lex.lex()
return t # Ignored characters t_ignore = " \t" def t_newline(t): r'\n+' t.lexer.lineno += t.value.count("\n") def t_error(t): print("Illegal character '%s'" % t.value[0]) t.lexer.skip(1) # Build the lexer import third_party.ply.lex as lex lex.lex() # Parsing rules precedence = ( ('left','PLUS','MINUS'), ('left','TIMES','DIVIDE'), ('right','UMINUS'), ) # dictionary of names names = { } def p_statement_assign(t): 'statement : NAME EQUALS expression' names[t[1]] = t[3]
def t_SIGNAL_NAME(t): r"""[a-zA-Z_][a-zA-Z0-9_]*""" # Check for reserved words t.type = reserved_all.get(t.value, t.type) return t def t_NUMBER(t): r"""\d+""" return t def t_newline(t): r"""\n+""" t.lexer.lineno += t.value.count("\n") def t_error(t): if t: print("Illegal character '%s'" % t.value[0]) t.lexer.skip(1) else: print("Error somewhere, current token is None") assert 0 import third_party.ply.lex as lex par_lexer = lex.lex()
def t_newline(t): r'\n+' t.lexer.lineno += t.value.count("\n") def t_error(t): print("Illegal character '%s'" % t.value[0]) t.lexer.skip(1) # Build the lexer import third_party.ply.lex as lex lex.lex() # Parsing rules precedence = ( ('left', 'PLUS', 'MINUS'), ('left', 'TIMES', 'DIVIDE'), ('right', 'UMINUS'), ) # dictionary of names names = {} def p_statement_assign(t): 'statement : NAME EQUALS expression'
def t_NUMBER(t): r"""\d+""" try: value = int(t.value) if not (0 <= value <= 1): raise ValueError('currently only 0, 1 are supported') t.value = Number(value) except ValueError: print("Integer value too large %d", t.value) t.value = '0' return t def t_newline(t): r"""\n+""" t.lexer.lineno += t.value.count("\n") def t_error(t): if t: print("Illegal character '%s'" % t.value[0]) t.lexer.skip(1) else: print('Error somewhere, current token is None') assert 0 import third_party.ply.lex as lex anzu_lexer = lex.lex()
def t_NUMBER(t): r"""\d+""" try: value = int(t.value) if not (0 <= value <= 1): raise ValueError('currently only 0, 1 are supported') t.value = Number(value) except ValueError: print("Integer value too large %d", t.value) t.value = '0' return t def t_newline(t): r"""\n+""" t.lexer.lineno += t.value.count("\n") def t_error(t): if t: print("Illegal character '%s'" % t.value[0]) t.lexer.skip(1) else: print('Error somewhere, current token is None') assert 0 acacia_lexer = lex.lex()
def t_SIGNAL_NAME(t): r"""[a-zA-Z_][a-zA-Z0-9_]*""" # Check for reserved words t.type = reserved_all.get(t.value, t.type) return t def t_NUMBER(t): r"""\d+""" return t def t_newline(t): r"""\n+""" t.lexer.lineno += t.value.count("\n") def t_error(t): if t: print("Illegal character '%s'" % t.value[0]) t.lexer.skip(1) else: print('Error somewhere, current token is None') assert 0 import third_party.ply.lex as lex par_lexer = lex.lex()