def _trace_from_string(cls, s): parser = ply.yacc.yacc( tabmodule='tracestring_parsetab', outputdir=LocMgr.EnsureMakeDirs('/tmp/parsetabs/'), debug=SettingsMgr.getPLYYaccDebugFlag() ) unit, tracePrototypes = parser.parse( t, lexer=l ) # Copy accross the start values: v=0 for prototype in tracePrototypes: prototype.start_value = v piece = prototype.toTracePiece() v = piece.getEndValue() # Convert to pieces pieces = [ tracePrototype.toTracePiece() for tracePrototype in tracePrototypes] tr = Trace_Piecewise(pieces=pieces) tr = tr * (1.0*unit) return tr
def p_unit_simple(p): 'unit : ID' p[0] = unit_from_string( p[1] ) def p_unit_simplenumber(p): 'unit : ID NUMBER' u = unit_from_string( p[1] ) p[0] = np.power(u, p[2] ) def p_error(p): print "Syntax error in input!" assert False parser = yacc.yacc(tabmodule = 'unitsparser_parsetab.py', outputdir=LocMgr.getPLYParseTabLocation('unitsparser'), debug=SettingsMgr.getPLYYaccDebugFlag() ) def parse(s): r = parser.parse(s, lexer=lexer, ) return r