[Modeling-cvs] ProjectModeling/Modeling CHANGES,1.122,1.123 QualifierParser.py,1.9,1.10
Status: Abandoned
Brought to you by:
sbigaret
From: <sbi...@us...> - 2003-07-14 12:14:19
|
Update of /cvsroot/modeling/ProjectModeling/Modeling In directory sc8-pr-cvs1:/tmp/cvs-serv15739 Modified Files: CHANGES QualifierParser.py Log Message: rewrote trace() statements in QualifierParser to avoid the unnecessary formatting of its arguments when it is not enabled. On my machine this speeds up the parsing of qualifiers strings up to x7. Index: CHANGES =================================================================== RCS file: /cvsroot/modeling/ProjectModeling/Modeling/CHANGES,v retrieving revision 1.122 retrieving revision 1.123 diff -C2 -d -r1.122 -r1.123 *** CHANGES 10 Jul 2003 11:57:54 -0000 1.122 --- CHANGES 14 Jul 2003 12:14:16 -0000 1.123 *************** *** 8,11 **** --- 8,15 ---- -------------------------------------------------------- + * rewrote trace() statements in QualifierParser to avoid the unnecessary + formatting of its arguments when it is not enabled. On my machine this + speeds up the parsing of qualifiers strings up to x7. + * Added operator 'in' and 'not in' for fetch qualifiers. Operators 'AND', 'OR' and 'NOT' can now be written with lower-case characters. Index: QualifierParser.py =================================================================== RCS file: /cvsroot/modeling/ProjectModeling/Modeling/QualifierParser.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** QualifierParser.py 10 Jul 2003 11:57:55 -0000 1.9 --- QualifierParser.py 14 Jul 2003 12:14:16 -0000 1.10 *************** *** 60,63 **** --- 60,65 ---- comp_op ::= <= comp_op ::= != + comp_op ::= IN + comp_op ::= NOT IN operator ::= AND operator ::= OR *************** *** 70,79 **** from Qualifier import * ! import string ! #import Qualifier ! def trace(string): pass - #print string # --- 72,80 ---- from Qualifier import * ! import string, sys ! def trace(string, *args): ! #print string%args pass # *************** *** 156,160 **** r' \( ' #trace('paren_close %s'%self.rv ! trace('Token paren_open: %s'%s) self.rv.append(Token(type='paren_open')) --- 157,161 ---- r' \( ' #trace('paren_close %s'%self.rv ! trace('Token paren_open: %s',s) self.rv.append(Token(type='paren_open')) *************** *** 162,191 **** r' \) ' #trace('paren_close %s'%self.rv ! trace('Token paren_close: %s'%s) self.rv.append(Token(type='paren_close')) def t_operator(self, s): r' AND | and | OR | or ' ! trace('Token Operator: %s'%s) self.rv.append(Token(type=s.upper())) def t_not_operator(self, s): r' NOT | not ' ! trace('Token NOT: %s'%s) self.rv.append(Token(type=s.upper())) def t_comp_op(self, s): r' \+ | \* | == | >= | > | <= | < | \!= | like | caseInsensitiveLike | ilike ' ! trace('Token COMP_OP: %s'%s) self.rv.append(Token(type=s)) def t_comp_op2(self, s): r' in | IN ' ! trace('Token COMP_OP2: %s'%s) self.rv.append(Token(type=s.lower())) def t_number(self, s): r' \d+ ' ! trace('Token number: %s'%s) t = Token(type='number', attr=s) self.rv.append(t) --- 163,192 ---- r' \) ' #trace('paren_close %s'%self.rv ! trace('Token paren_close: %s',s) self.rv.append(Token(type='paren_close')) def t_operator(self, s): r' AND | and | OR | or ' ! trace('Token Operator: %s',s) self.rv.append(Token(type=s.upper())) def t_not_operator(self, s): r' NOT | not ' ! trace('Token NOT: %s',s) self.rv.append(Token(type=s.upper())) def t_comp_op(self, s): r' \+ | \* | == | >= | > | <= | < | \!= | like | caseInsensitiveLike | ilike ' ! trace('Token COMP_OP: %s',s) self.rv.append(Token(type=s)) def t_comp_op2(self, s): r' in | IN ' ! trace('Token COMP_OP2: %s',s) self.rv.append(Token(type=s.lower())) def t_number(self, s): r' \d+ ' ! trace('Token number: %s',s) t = Token(type='number', attr=s) self.rv.append(t) *************** *** 193,197 **** def t_float(self, s): r' \d+ \. \d+ ' ! trace('Token float: %s'%s) t = Token(type='float', attr=s) self.rv.append(t) --- 194,198 ---- def t_float(self, s): r' \d+ \. \d+ ' ! trace('Token float: %s',s) t = Token(type='float', attr=s) self.rv.append(t) *************** *** 199,203 **** def t_string(self, s): r' \"[^\"]*\" ' ! trace('Token string: %s'%s) t = Token(type='string', attr=s[1:-1]) self.rv.append(t) --- 200,204 ---- def t_string(self, s): r' \"[^\"]*\" ' ! trace('Token string: %s',s) t = Token(type='string', attr=s[1:-1]) self.rv.append(t) *************** *** 205,209 **** def t_nullValue(self, s): r' NULL | None ' ! trace('Token string: %s'%s) t = Token(type='nullValue', attr=None) self.rv.append(t) --- 206,210 ---- def t_nullValue(self, s): r' NULL | None ' ! trace('Token string: %s',s) t = Token(type='nullValue', attr=None) self.rv.append(t) *************** *** 212,216 **** def t_z_keypath(self, s): r' [a-zA-Z][a-zA-Z0-9_\.]+ ' ! trace('Token keyPath: %s'%s) t = Token(type='keypath', attr=s) self.rv.append(t) --- 213,217 ---- def t_z_keypath(self, s): r' [a-zA-Z][a-zA-Z0-9_\.]+ ' ! trace('Token keyPath: %s',s) t = Token(type='keypath', attr=s) self.rv.append(t) *************** *** 218,237 **** def t_square_bracket_open(self, s): r' \[ ' ! trace('Token square_bracket_open: %s'%s) self.rv.append(Token(type='square_bracket_open')) def t_square_bracket_close(self, s): r' \] ' ! trace('Token square_bracket_close: %s'%s) self.rv.append(Token(type='square_bracket_close')) def t_comma(self, s): r' , ' ! trace('Token comma: %s'%s) self.rv.append(Token(type='comma')) #def t_simplekeypath(self, s): # r' \c+ ' ! # trace('Token simpleKeyPath: %s'%s) # t = Token(type='keypath', attr=s) # self.rv.append(t) --- 219,238 ---- def t_square_bracket_open(self, s): r' \[ ' ! trace('Token square_bracket_open: %s',s) self.rv.append(Token(type='square_bracket_open')) def t_square_bracket_close(self, s): r' \] ' ! trace('Token square_bracket_close: %s',s) self.rv.append(Token(type='square_bracket_close')) def t_comma(self, s): r' , ' ! trace('Token comma: %s',s) self.rv.append(Token(type='comma')) #def t_simplekeypath(self, s): # r' \c+ ' ! # trace('Token simpleKeyPath: %s',s) # t = Token(type='keypath', attr=s) # self.rv.append(t) *************** *** 239,243 **** #def t_compoundkeypath(self, s): # r' \c+ ( \. \c+ )+' ! # trace('Token compound: %s'%s) # t = Token(type='keypath', attr=s) # self.rv.append(t) --- 240,244 ---- #def t_compoundkeypath(self, s): # r' \c+ ( \. \c+ )+' ! # trace('Token compound: %s',s) # t = Token(type='keypath', attr=s) # self.rv.append(t) *************** *** 257,266 **** def error(self, token): ! trace("Syntax error sur token: `%s'" % token) raise ValueError, "Syntax error near token: `%s'" % token def p_qual_1(self, args): r' qual ::= qual operator qual ' ! trace('p_qual_1 %s/%s/%s'%(args[0], args[1], args[2])) return AST(type=args[1], left=args[0], --- 258,267 ---- def error(self, token): ! trace("Syntax error sur token: `%s'",token) raise ValueError, "Syntax error near token: `%s'" % token def p_qual_1(self, args): r' qual ::= qual operator qual ' ! trace('p_qual_1 %s/%s/%s', args[0], args[1], args[2]) return AST(type=args[1], left=args[0], *************** *** 269,273 **** def p_qual_2(self, args): r' qual ::= paren_open qual paren_close ' ! trace('paren qual:%s (%s-%s-%s)'%(args[1],args[1].left,args[1].type,args[1].right)) #inside=AST(args[0]) return AST(Token('paren', args[1])) --- 270,274 ---- def p_qual_2(self, args): r' qual ::= paren_open qual paren_close ' ! trace('paren qual:%s (%s-%s-%s)',args[1],args[1].left,args[1].type,args[1].right) #inside=AST(args[0]) return AST(Token('paren', args[1])) *************** *** 275,284 **** def p_qual_3(self, args): r' qual ::= expr ' ! trace('qual_3: %s'%args[0]) return args[0] def p_expr_1(self, args): r' expr ::= expr comp_op expr ' ! trace('p_expr_1 %s/%s/%s'%(args[0], args[1], args[2])) return AST(type=args[1], left=args[0], --- 276,285 ---- def p_qual_3(self, args): r' qual ::= expr ' ! trace('qual_3: %s',args[0]) return args[0] def p_expr_1(self, args): r' expr ::= expr comp_op expr ' ! trace('p_expr_1 %s/%s/%s',args[0], args[1], args[2]) return AST(type=args[1], left=args[0], *************** *** 287,291 **** def p_expr_in(self, args): r' expr ::= expr comp_op2 square_bracket_open comma_separated square_bracket_close ' ! trace('p_expr_1a %s/%s/%s/%s/%s'%(args[0],args[1],args[2],args[3],args[4])) return AST(type=args[1], left=args[0], --- 288,292 ---- def p_expr_in(self, args): r' expr ::= expr comp_op2 square_bracket_open comma_separated square_bracket_close ' ! trace('p_expr_1a %s/%s/%s/%s/%s',args[0],args[1],args[2],args[3],args[4]) return AST(type=args[1], left=args[0], *************** *** 294,298 **** def p_expr_not_in(self, args): r' expr ::= expr not_in square_bracket_open comma_separated square_bracket_close ' ! trace('p_expr_1a %s/%s/%s/%s/%s'%(args[0],args[1],args[2],args[3],args[4])) return AST(type=args[1], left=args[0], --- 295,299 ---- def p_expr_not_in(self, args): r' expr ::= expr not_in square_bracket_open comma_separated square_bracket_close ' ! trace('p_expr_1a %s/%s/%s/%s/%s',args[0],args[1],args[2],args[3],args[4]) return AST(type=args[1], left=args[0], *************** *** 301,315 **** def p_not_in(self, args): r' not_in ::= not_operator comp_op2 ' ! trace('p_not_in %s %s'%(args[0],args[1])) return AST(Token('not_in')) def p_comma_separated_1(self, args): r' comma_separated ::= term ' ! trace('p_comma_separated_1 %s'%args[0]) return AST(Token('comma_separated', [args[0]])) def p_comma_separated_2(self, args): r' comma_separated ::= comma_separated comma term' ! trace('p_comma_separated_2 %s %s'%(args[0], args[2])) l=args[0].attr[:] l.append(args[2]) --- 302,316 ---- def p_not_in(self, args): r' not_in ::= not_operator comp_op2 ' ! trace('p_not_in %s %s',args[0],args[1]) return AST(Token('not_in')) def p_comma_separated_1(self, args): r' comma_separated ::= term ' ! trace('p_comma_separated_1 %s',args[0]) return AST(Token('comma_separated', [args[0]])) def p_comma_separated_2(self, args): r' comma_separated ::= comma_separated comma term' ! trace('p_comma_separated_2 %s %s',args[0], args[2]) l=args[0].attr[:] l.append(args[2]) *************** *** 318,332 **** def p_expr_2(self, args): r' expr ::= paren_open expr paren_close ' ! trace('paren expr_2:%s (%s-%s-%s)'%(args[1],args[1].left,args[1].type,args[1].right)) return AST(Token('paren', args[1])) def p_expr_3(self, args): r' expr ::= term ' ! trace('expr_3: %s'%args[0]) return args[0] def p_expr_4(self, args): r' expr ::= not_expr ' ! trace('expr_4: %s'%args[0]) return AST(args[0]) #return AST(Token('NOT', args[0].left)) --- 319,333 ---- def p_expr_2(self, args): r' expr ::= paren_open expr paren_close ' ! trace('paren expr_2:%s (%s-%s-%s)',args[1],args[1].left,args[1].type,args[1].right) return AST(Token('paren', args[1])) def p_expr_3(self, args): r' expr ::= term ' ! trace('expr_3: %s',args[0]) return args[0] def p_expr_4(self, args): r' expr ::= not_expr ' ! trace('expr_4: %s',args[0]) return AST(args[0]) #return AST(Token('NOT', args[0].left)) *************** *** 334,363 **** def p_term_1(self, args): r' term ::= number ' ! trace('term_1: %s'%args[0]) return AST(type=args[0]) def p_term_2(self, args): r' term ::= float ' ! trace('term_2: %s'%args[0]) return AST(type=args[0]) def p_term_3(self, args): r' term ::= string ' ! trace('term_3: %s'%args[0]) return AST(type=args[0]) def p_term_4(self, args): r' term ::= keypath ' ! trace('term_4: %s'%args[0]) return AST(type=args[0]) def p_term_5(self, args): r' term ::= nullValue ' ! trace('term_5: %s'%args[0]) return AST(type=args[0]) def p_not_expr(self, args): r' not_expr ::= not_operator qual ' ! trace('not_expr: %s/%s'%(args[0],args[1])) type=args[0] args[0].attr=args[1] --- 335,364 ---- def p_term_1(self, args): r' term ::= number ' ! trace('term_1: %s',args[0]) return AST(type=args[0]) def p_term_2(self, args): r' term ::= float ' ! trace('term_2: %s',args[0]) return AST(type=args[0]) def p_term_3(self, args): r' term ::= string ' ! trace('term_3: %s',args[0]) return AST(type=args[0]) def p_term_4(self, args): r' term ::= keypath ' ! trace('term_4: %s',args[0]) return AST(type=args[0]) def p_term_5(self, args): r' term ::= nullValue ' ! trace('term_5: %s',args[0]) return AST(type=args[0]) def p_not_expr(self, args): r' not_expr ::= not_operator qual ' ! trace('not_expr: %s/%s',args[0],args[1]) type=args[0] args[0].attr=args[1] *************** *** 379,383 **** comp_op ::= ilike ''' ! trace('comp_op: %s'%args[0]) return AST(type=args[0]) --- 380,384 ---- comp_op ::= ilike ''' ! trace('comp_op: %s',args[0]) return AST(type=args[0]) *************** *** 386,390 **** comp_op2 ::= in ''' ! trace('comp_op2: %s'%args[0]) return AST(type=args[0]) --- 387,391 ---- comp_op2 ::= in ''' ! trace('comp_op2: %s',args[0]) return AST(type=args[0]) *************** *** 394,403 **** operator ::= OR ''' ! trace('Operator: %s'%args[0]) return AST(type=args[0]) def p_not_operator(self, args): r' not_operator ::= NOT ' ! trace('Operator: %s'%args[0]) return AST(type=args[0]) --- 395,404 ---- operator ::= OR ''' ! trace('Operator: %s',args[0]) return AST(type=args[0]) def p_not_operator(self, args): r' not_operator ::= NOT ' ! trace('Operator: %s',args[0]) return AST(type=args[0]) *************** *** 436,447 **** node.exprType = 'nullValue' def n_paren(self, node): ! trace('N_PAREN ######%s %s'%(node.type,repr(node))) node.exprType = 'paren' def n_comma_separated(self, node): ! trace('COMMA_SEPARATED ######%s %s'%(node.type,repr(node))) node.exprType = 'comma_separated' def default(self, node): # this handles + and * nodes ! trace("TypeCheck default: node: %s %s"%(node,node.type)) #leftType = node.left.exprType #rightType = node.right.exprType --- 437,448 ---- node.exprType = 'nullValue' def n_paren(self, node): ! trace('N_PAREN ######%s %s',node.type,repr(node)) node.exprType = 'paren' def n_comma_separated(self, node): ! trace('COMMA_SEPARATED ######%s %s',node.type,repr(node)) node.exprType = 'comma_separated' def default(self, node): # this handles + and * nodes ! trace("TypeCheck default: node: %s %s",node,node.type) #leftType = node.left.exprType #rightType = node.right.exprType *************** *** 465,473 **** class Interpret(ASTTraversal): def __init__(self, ast): ! trace('Interpret.init() ast: %s'%ast) ASTTraversal.__init__(self, ast) self.postorder() self.value=ast.value ! trace('Interpret returns: %s'%self.value) def n_number(self, node): --- 466,474 ---- class Interpret(ASTTraversal): def __init__(self, ast): ! trace('Interpret.init() ast: %s',ast) ASTTraversal.__init__(self, ast) self.postorder() self.value=ast.value ! trace('Interpret returns: %s',self.value) def n_number(self, node): *************** *** 483,493 **** node.value = None def n_paren(self, node): ! trace('## Interpret_PAREN ###### %s'%repr(node)) _node=Interpret(node.attr) node.value = _node.value #node.attr = _node.attr def n_comma_separated(self, node): ! trace('## Interpret comma_separated ###### %s'%repr(node)) ! trace('## node.attr: %s'%node.attr) #_node=Interpret(node.attr) l=[] --- 484,494 ---- node.value = None def n_paren(self, node): ! trace('## Interpret_PAREN ###### %s',repr(node)) _node=Interpret(node.attr) node.value = _node.value #node.attr = _node.attr def n_comma_separated(self, node): ! trace('## Interpret comma_separated ###### %s',repr(node)) ! trace('## node.attr: %s',node.attr) #_node=Interpret(node.attr) l=[] *************** *** 498,507 **** def n_NOT(self, node): _node=Interpret(node.attr) ! trace('NOT node :%s'%_node.value) node.value = NotQualifier(_node.value) def default(self, node): left = right = None ! trace('default: node: %s'%node) try: left = node.left.value except: pass --- 499,508 ---- def n_NOT(self, node): _node=Interpret(node.attr) ! trace('NOT node :%s',_node.value) node.value = NotQualifier(_node.value) def default(self, node): left = right = None ! trace('default: node: %s',node) try: left = node.left.value except: pass *************** *** 513,523 **** #else: # node.value = left * right ! trace('left: %s type: %s right: %s'%(left, node.type, right)) if node.type == 'AND': node.value=AndQualifier(map(lambda o: o.value, node._kids)) ! trace("node.value: %s"%node.value) if node.type == 'OR': node.value=OrQualifier(map(lambda o: o.value, node._kids)) ! trace("node.value: %s"%node.value) if node.type in allQualifierOperators(): if node[1].type=='keypath': --- 514,524 ---- #else: # node.value = left * right ! trace('left: %s type: %s right: %s',left, node.type, right) if node.type == 'AND': node.value=AndQualifier(map(lambda o: o.value, node._kids)) ! trace("node.value: %s",node.value) if node.type == 'OR': node.value=OrQualifier(map(lambda o: o.value, node._kids)) ! trace("node.value: %s",node.value) if node.type in allQualifierOperators(): if node[1].type=='keypath': *************** *** 525,529 **** operatorForString(node.type), node[1].value) ! trace("node.value(keypath): %s"%node.value) if node[1].type in ('string', 'number', 'float', 'nullValue', 'comma_separated'): --- 526,530 ---- operatorForString(node.type), node[1].value) ! trace("node.value(keypath): %s",node.value) if node[1].type in ('string', 'number', 'float', 'nullValue', 'comma_separated'): *************** *** 531,535 **** operatorForString(node.type), node[1].value) ! trace("node.value(other): %s"%node.value) --- 532,536 ---- operatorForString(node.type), node[1].value) ! trace("node.value(other): %s",node.value) *************** *** 544,552 **** strIO=StringIO(anExpression) sc=scan(strIO) ! trace("\nEND scan: %s\n\n"%sc) _parse=parse(sc) ! trace("\nEND parse: %s\n\n"%_parse) sem=semantic(_parse) ! trace("\nEND sem: %s\n\n"%sem) result=generate(sem) # The following ensures that the result is of the correct type --- 545,553 ---- strIO=StringIO(anExpression) sc=scan(strIO) ! trace("\nEND scan: %s\n\n",sc) _parse=parse(sc) ! trace("\nEND parse: %s\n\n",_parse) sem=semantic(_parse) ! trace("\nEND sem: %s\n\n",sem) result=generate(sem) # The following ensures that the result is of the correct type *************** *** 571,579 **** strIO=StringIO(sys.argv[1]) sc=scan(strIO) ! trace("\nEND scan: %s\n\n"%sc) parse=parse(sc) ! trace("\nEND parse: %s\n\n"%parse) sem=semantic(parse) ! trace("\nEND sem: %s\n\n"%sem) print str(generate(sem)) #f.close() --- 572,580 ---- strIO=StringIO(sys.argv[1]) sc=scan(strIO) ! trace("\nEND scan: %s\n\n",sc) parse=parse(sc) ! trace("\nEND parse: %s\n\n",parse) sem=semantic(parse) ! trace("\nEND sem: %s\n\n",sem) print str(generate(sem)) #f.close() |