Ñò 2/oHc @ sH d d k Td d k Td d k Td d k Td d k Td d k l Z d d k l Z d d d g Z e ƒ d d „ Z d „ Z e e e d ƒ f ƒ d „ Z e e e f ƒ d „ Z d e f d „ ƒ YZ d „ Z d „ Z e e d e ƒd „ Z e e e e ƒ f ƒ e e e e ƒ f ƒ d „ Z e e e f ƒ d „ Z d S( iÿÿÿÿ( t *( t NAME( t buildt Bindt match_predicatet match_sequencec C s% | d j o | f St d ƒ ‚ d S( Ns Can't compile Bind expression( t Nonet TypeError( t namet code( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyR s c C s t t | ƒ t d | ƒ ƒ S( sD Return predicate matching pattern to expr, updating binds w/bindingss ==( t Testt Comparisont Inequality( t patternt exprt binds( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyR s c C s t t | ƒ t | ƒ ƒ S( N( R t Identityt IsObject( R R R ( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyt match_none s c C s… | i d j oq | i | i g ƒ } | | j oK | i | ƒ x; | d d !D]( } t t t | d | f f ƒ ƒ t ƒ SWq n t S( Nt _iþÿÿÿiÿÿÿÿs ==( R t setdefaultt appendR t Trutht Comparet True( R R R t valst old( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyt match_bind s .t SyntaxBuilderc B s e Z d „ Z RS( c C sW x$ t | ƒ d j o | \ } } q W| d t j o t | d ƒ St d ƒ ‚ d S( Ni i i s1 backquotes may only be used around an indentifier( t lenR R t SyntaxError( t selfR ( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyt Backquote$ s ( t __name__t __module__R ( ( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyR # s c C s t d ƒ ‚ d S( sï Match `expr` against inline pattern `pattern` This function can only be called inside a rule string; the second argument is treated as a syntactic match pattern, which can include backquoted locals to be used as bind patterns.s? Use match_predicate() to match compiled patterns outside a ruleN( t NotImplementedError( R R ( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyt match* s c C s4 | i } t | _ z t | | ƒ SWd | | _ Xd S( N( t __class__R R ( t buildert nodeR ( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyt build_pattern4 s R c C sf h } t | | | ƒ } | i t g } | i ƒ D]# \ } } | | t | ƒ d f q2 ~ ƒ ƒ | S( Ni ( R t bindt dictt itemst list( t __builder__R R R t predt _[1]t kt v( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyt compile_match= s Jc C s~ t t t t t ƒ | f ƒ ƒ t t | ƒ ƒ ƒ } xD t | ƒ D]6 \ } } t | t | t | t | ƒ ƒ | ƒ ƒ } q@ W| S( N( R R t Callt ConstR t Valuet enumeratet intersectR t Getitem( R R R R. t post item( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyR U s 3 +c C sw t t | ƒ t t | ƒ ƒ ƒ } xO t | ƒ D]A \ } } | o. t | t | t | t | ƒ ƒ | ƒ ƒ } q. q. W| S( N( R t IsInstancet istypet typeR6 R7 R R8 R4 ( R R R R. R9 R: ( ( s5 /usr/lib/python2.6/site-packages/peak/rules/syntax.pyt match_node^ s ! /N( t peak.util.assemblert codegent criteriat predicatest coret tokenR t ast_builderR t __all__t nodetypeR R R t whenR= R R t ExprBuilderR R$ R( t meta_functionR2 R<