From 3d8c040efa8772605ffbe8a0146e168b1e48041e Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sun, 16 Feb 2020 22:47:35 +0100 Subject: [PATCH] FEM: tokes module, some but not all pep8 codeformating --- src/Mod/Fem/femtools/tokrules.py | 48 ++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/src/Mod/Fem/femtools/tokrules.py b/src/Mod/Fem/femtools/tokrules.py index 59c398dc9d..3a7ba6a1f3 100644 --- a/src/Mod/Fem/femtools/tokrules.py +++ b/src/Mod/Fem/femtools/tokrules.py @@ -24,10 +24,18 @@ __author__ = "Werner Mayer" __url__ = "http://www.freecadweb.org" tokens = ( - 'NAME','FLOAT','INT', - 'PLUS','MINUS','TIMES','DIVIDE','EQUALS', - 'LPAREN','RPAREN','COMMENT', - ) + 'NAME', + 'FLOAT', + 'INT', + 'PLUS', + 'MINUS', + 'TIMES', + 'DIVIDE', + 'EQUALS', + 'LPAREN', + 'RPAREN', + 'COMMENT', +) # Tokens @@ -40,53 +48,64 @@ t_LPAREN = r'\(' t_RPAREN = r'\)' t_NAME = r'[a-zA-Z_][a-zA-Z0-9_]*' + def t_FLOAT(t): r'\d+\.(\d+)?([eE][-+]?\d+)?' t.value = float(t.value) return t + def t_INT(t): r'\d+' t.value = int(t.value) return t + # Ignored characters t_ignore = " \t" + def t_COMMENT(t): r'\#.*' pass + 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 ply.lex as lex lex.lex() + # Precedence rules for the arithmetic operators precedence = ( - ('left','PLUS','MINUS'), - ('left','TIMES','DIVIDE'), - ('right','UMINUS'), - ) + ('left', 'PLUS', 'MINUS'), + ('left', 'TIMES', 'DIVIDE'), + ('right', 'UMINUS'), +) # dictionary of names (for storing variables) -names = { } +names = {} + def p_statement_assign(p): 'statement : NAME EQUALS expression' names[p[1]] = p[3] + def p_statement_expr(p): 'statement : expression' print(p[1]) + def p_expression_binop(p): '''expression : expression PLUS expression | expression MINUS expression @@ -97,22 +116,27 @@ def p_expression_binop(p): elif p[2] == '*': p[0] = p[1] * p[3] elif p[2] == '/': p[0] = p[1] / p[3] + def p_expression_uminus(p): 'expression : MINUS expression %prec UMINUS' p[0] = -p[2] + def p_expression_group(p): 'expression : LPAREN expression RPAREN' p[0] = p[2] + def p_expression_float(p): 'expression : FLOAT' p[0] = p[1] + def p_expression_int(p): 'expression : INT' p[0] = p[1] + def p_expression_name(p): 'expression : NAME' try: @@ -121,8 +145,10 @@ def p_expression_name(p): print("Undefined name '%s'" % p[1]) p[0] = 0 + def p_error(p): print("Syntax error at '%s'" % p.value) + import ply.yacc as yacc yacc.yacc()