U `@sddlmZmZmZmZmZddlZddlZddl Z ddl Z ddl Tddl mZe eZddZGdddeZGd d d eZed kre ed d ZeeejdS))print_functionabsolute_importdivision generators nested_scopesN)*) JsonPathLexercCs t|SN)JsonPathParserparse)stringr 6/tmp/pip-unpacked-wheel-e4vcopd5/jsonpath_ng/parser.pyr sr c@seZdZdZejZd9ddZd:ddZd;d d Zd d d dddgZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8ZdS)|dkrt|d|d|d<n|d krt|d|d|d<d S) zjsonpath : jsonpath '.' jsonpath | jsonpath DOUBLEDOT jsonpath | jsonpath WHERE jsonpath | jsonpath '|' jsonpath | jsonpath '&' jsonpathr+rrz..wherer,r-N)ChildZ DescendantsZWhereUnionZ Intersect)rpopr r rp_jsonpath_binopGszJsonPathParser.p_jsonpath_binopcCst|d|d<dS)zjsonpath : fields_or_anyrrNFieldsrr9r r rp_jsonpath_fieldsZsz JsonPathParser.p_jsonpath_fieldscCsV|ddkrt|d<n:|ddkr0t|d<n"td|d|d|dfdS)zjsonpath : NAMED_OPERATORrthisrparentz$Unknown named operator `%s` at %s:%sN)ZThisZParentrr.Zlexposr>r r rp_jsonpath_named_operator^s     z(JsonPathParser.p_jsonpath_named_operatorcCst|d<dS)zjsonpath : '$'rN)ZRootr>r r rp_jsonpath_rootgszJsonPathParser.p_jsonpath_rootcCs|d|d<dS)zjsonpath : '[' idx ']'r4rNr r>r r rp_jsonpath_idxkszJsonPathParser.p_jsonpath_idxcCs|d|d<dS)zjsonpath : '[' slice ']'r4rNr r>r r rp_jsonpath_sliceoszJsonPathParser.p_jsonpath_slicecCst|d|d<dS)zjsonpath : '[' fields ']'r4rNr<r>r r rp_jsonpath_fieldbracketsssz'JsonPathParser.p_jsonpath_fieldbracketscCst|dt|d|d<dS)z"jsonpath : jsonpath '[' fields ']'rr5rN)r7r=r>r r rp_jsonpath_child_fieldbracketswsz-JsonPathParser.p_jsonpath_child_fieldbracketscCst|d|d|d<dS)zjsonpath : jsonpath '[' idx ']'rr5rNr7r>r r rp_jsonpath_child_idxbrackets{sz+JsonPathParser.p_jsonpath_child_idxbracketscCst|d|d|d<dS)z!jsonpath : jsonpath '[' slice ']'rr5rNrHr>r r rp_jsonpath_child_slicebracketssz-JsonPathParser.p_jsonpath_child_slicebracketscCs|d|d<dS)zjsonpath : '(' jsonpath ')'r4rNr r>r r rp_jsonpath_parenssz JsonPathParser.p_jsonpath_parenscCs(|ddkrdg|d<n |d|d<dS)z9fields_or_any : fields | '*' rrrNr r>r r rp_fields_or_anys  zJsonPathParser.p_fields_or_anycCs|dg|d<dS)z fields : IDrrNr r>r r r p_fields_idszJsonPathParser.p_fields_idcCs|d|d|d<dS)zfields : fields ',' fieldsrr5rNr r>r r rp_fields_commaszJsonPathParser.p_fields_commacCst|d|d<dS)z idx : NUMBERrrN)ZIndexr>r r rp_idxszJsonPathParser.p_idxcCst|d<dS)z slice : '*'rNZSlicer>r r r p_slice_anyszJsonPathParser.p_slice_anycCst|d|dd|d<dS)zslice : maybe_int ':' maybe_intrr5)rendrNrPr>r r rp_sliceszJsonPathParser.p_slicecCs|d|d<dS)z/maybe_int : NUMBER | emptyrrNr r>r r r p_maybe_intszJsonPathParser.p_maybe_intcCs d|d<dS)zempty :Nrr r>r r rp_emptyszJsonPathParser.p_empty)FN)N)r)r# __module__ __qualname__rrtokensrr r precedencer3r;r?rBrCrDrErFrGrIrJrKrLrMrNrOrQrSrTrUr r r rr s@     r c@seZdZddZddZdS)r'cCs ||_dSr )iterator)rrZr r rrszIteratorToTokenStream.__init__cCs(z t|jWStk r"YdSXdSr )nextrZ StopIteration)rr r rtokens zIteratorToTokenStream.tokenN)r#rVrWrr]r r r rr'sr'__main__T)r) __future__rrrrrsysos.pathrloggingZply.yaccr%Zjsonpath_ng.jsonpathZjsonpath_ng.lexerr getLoggerr#r&r objectr r' basicConfigparserprintstdinreadr r r rs