@@ -426,83 +426,6 @@ protected AstRangeBracket createAstRangeBracket(
426426 );
427427 }
428428
429- @ Override
430- protected AstNode mul (boolean required ) throws ScanException , ParseException {
431- AstNode v = filter (required );
432- if (v == null ) {
433- return null ;
434- }
435- while (true ) {
436- switch (getToken ().getSymbol ()) {
437- case MUL :
438- consumeToken ();
439- v = createAstBinary (v , filter (true ), AstBinary .MUL );
440- break ;
441- case DIV :
442- consumeToken ();
443- v = createAstBinary (v , filter (true ), AstBinary .DIV );
444- break ;
445- case MOD :
446- consumeToken ();
447- v = createAstBinary (v , filter (true ), AstBinary .MOD );
448- break ;
449- case EXTENSION :
450- if (getExtensionHandler (getToken ()).getExtensionPoint () == ExtensionPoint .MUL ) {
451- v = getExtensionHandler (consumeToken ()).createAstNode (v , filter (true ));
452- break ;
453- }
454- default :
455- return v ;
456- }
457- }
458- }
459-
460- protected AstNode filter (boolean required ) throws ScanException , ParseException {
461- AstNode v = unary (required );
462- if (v == null ) {
463- return null ;
464- }
465- while (true ) {
466- if ("|" .equals (getToken ().getImage ()) && lookahead (0 ).getSymbol () == IDENTIFIER ) {
467- do {
468- consumeToken (); // '|'
469- String filterName = consumeToken ().getImage ();
470- List <AstNode > filterParams = Lists .newArrayList (v , interpreter ());
471-
472- // optional filter args
473- if (getToken ().getSymbol () == Symbol .LPAREN ) {
474- AstParameters astParameters = params ();
475- for (int i = 0 ; i < astParameters .getCardinality (); i ++) {
476- filterParams .add (astParameters .getChild (i ));
477- }
478- }
479-
480- AstProperty filterProperty = createAstDot (
481- identifier (FILTER_PREFIX + filterName ),
482- "filter" ,
483- true
484- );
485- v = createAstMethod (filterProperty , createAstParameters (filterParams )); // function("filter:" + filterName, new AstParameters(filterParams));
486- } while ("|" .equals (getToken ().getImage ()));
487- } else if (
488- "is" .equals (getToken ().getImage ()) &&
489- "not" .equals (lookahead (0 ).getImage ()) &&
490- isPossibleExpTest (lookahead (1 ).getSymbol ())
491- ) {
492- consumeToken (); // 'is'
493- consumeToken (); // 'not'
494- v = buildAstMethodForIdentifier (v , "evaluateNegated" );
495- } else if (
496- "is" .equals (getToken ().getImage ()) && isPossibleExpTest (lookahead (0 ).getSymbol ())
497- ) {
498- consumeToken (); // 'is'
499- v = buildAstMethodForIdentifier (v , "evaluate" );
500- } else {
501- return v ;
502- }
503- }
504- }
505-
506429 @ Override
507430 protected AstNode value () throws ScanException , ParseException {
508431 boolean lvalue = true ;
@@ -552,6 +475,45 @@ protected AstNode value() throws ScanException, ParseException {
552475
553476 break ;
554477 default :
478+ if (
479+ "|" .equals (getToken ().getImage ()) && lookahead (0 ).getSymbol () == IDENTIFIER
480+ ) {
481+ do {
482+ consumeToken (); // '|'
483+ String filterName = consumeToken ().getImage ();
484+ List <AstNode > filterParams = Lists .newArrayList (v , interpreter ());
485+
486+ // optional filter args
487+ if (getToken ().getSymbol () == Symbol .LPAREN ) {
488+ AstParameters astParameters = params ();
489+ for (int i = 0 ; i < astParameters .getCardinality (); i ++) {
490+ filterParams .add (astParameters .getChild (i ));
491+ }
492+ }
493+
494+ AstProperty filterProperty = createAstDot (
495+ identifier (FILTER_PREFIX + filterName ),
496+ "filter" ,
497+ true
498+ );
499+ v = createAstMethod (filterProperty , createAstParameters (filterParams )); // function("filter:" + filterName, new AstParameters(filterParams));
500+ } while ("|" .equals (getToken ().getImage ()));
501+ } else if (
502+ "is" .equals (getToken ().getImage ()) &&
503+ "not" .equals (lookahead (0 ).getImage ()) &&
504+ isPossibleExpTest (lookahead (1 ).getSymbol ())
505+ ) {
506+ consumeToken (); // 'is'
507+ consumeToken (); // 'not'
508+ v = buildAstMethodForIdentifier (v , "evaluateNegated" );
509+ } else if (
510+ "is" .equals (getToken ().getImage ()) &&
511+ isPossibleExpTest (lookahead (0 ).getSymbol ())
512+ ) {
513+ consumeToken (); // 'is'
514+ v = buildAstMethodForIdentifier (v , "evaluate" );
515+ }
516+
555517 return v ;
556518 }
557519 }
0 commit comments