Author: cbrisson Date: Mon Oct 8 11:00:31 2018 New Revision: 1843127 URL: http://svn.apache.org/viewvc?rev=1843127&view=rev Log: [engine] Improve parser debugging output
Modified: velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt Modified: velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt?rev=1843127&r1=1843126&r2=1843127&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt Mon Oct 8 11:00:31 2018 @@ -68,11 +68,11 @@ options USER_CHAR_STREAM=true; /** - * for debugging purposes. Keep false + * for debugging purposes. Those are now handled from within javacc-maven-plugin debugging flags in pom.xml + DEBUG_PARSER = true; + DEBUG_LOOKAHEAD = true; + DEBUG_TOKEN_MANAGER = true; */ - DEBUG_PARSER = false; - DEBUG_LOOKAHEAD = false; - DEBUG_TOKEN_MANAGER = false; } PARSER_BEGIN(Parser) @@ -402,6 +402,7 @@ TOKEN_MGR_DECLS: List stateStack = new ArrayList(50); + /* More debug output */ public boolean debugPrint = false; private boolean inReference; @@ -409,12 +410,19 @@ TOKEN_MGR_DECLS: public boolean inSet; /** - * pushes the current state onto the 'state stack', - * and maintains the parens counts - * public because we need it in PD & VM handling + * Switches to a new state (add some log to the default method) + */ + public void switchTo(int lexState) + { + if( debugPrint ) + System.out.println(" switch to " + lexStateNames[lexState]); + SwitchTo(lexState); + } + + /** + * pops a state off the stack, and restores paren counts * - * @return boolean : success. It can fail if the state machine - * gets messed up (do don't mess it up :) + * @return boolean : success of operation */ public boolean stateStackPop() { @@ -427,34 +435,34 @@ TOKEN_MGR_DECLS: { // empty stack lparen=0; - SwitchTo(DEFAULT); + switchTo(DEFAULT); return false; } if( debugPrint ) - System.out.println( - " stack pop (" + stateStack.size() + ") : lparen=" + - s.lparen + - " newstate=" + s.lexstate ); + System.out.println(" stack pop (" + stateStack.size() + ")"); lparen = s.lparen; rparen = s.rparen; - SwitchTo(s.lexstate); + switchTo(s.lexstate); return true; } /** - * pops a state off the stack, and restores paren counts + * pushes the current state onto the 'state stack', + * and maintains the parens counts + * public because we need it in PD & VM handling * - * @return boolean : success of operation + * @return boolean : success. It can fail if the state machine + * gets messed up (do don't mess it up :) */ public boolean stateStackPush() { if( debugPrint ) System.out.println(" (" + stateStack.size() + ") pushing cur state : " + - curLexState ); + lexStateNames[curLexState] ); ParserState s = new ParserState(); s.lparen = lparen; @@ -562,7 +570,7 @@ TOKEN: <INDEX_LBRACKET: "["> { stateStackPush(); - SwitchTo(REFINDEX); + switchTo(REFINDEX); } } @@ -618,7 +626,7 @@ TOKEN: */ if (curLexState == REFMODIFIER ) - SwitchTo( REFMOD2 ); + switchTo( REFMOD2 ); } } @@ -651,7 +659,7 @@ TOKEN: * $foo.bar().blargh().woogie().doogie() */ - SwitchTo( REFMOD3 ); + switchTo( REFMOD3 ); } } @@ -698,11 +706,11 @@ TOKEN: if (! inComment) { if ( debugPrint ) - System.out.print("#set : going to " + DIRECTIVE ); + System.out.println(" #set : going to DIRECTIVE" ); stateStackPush(); inSet = true; - SwitchTo(DIRECTIVE); + switchTo(DIRECTIVE); } /* @@ -719,7 +727,7 @@ TOKEN: */ if (curLexState == REFMODIFIER ) - SwitchTo( REFMOD2 ); + switchTo( REFMOD2 ); } } } @@ -749,14 +757,14 @@ MORE : inReference = true; if ( debugPrint ) - System.out.print( "$ : going to " + PRE_REFERENCE ); + System.out.println( " $ : going to PRE_REFERENCE" ); /* do not push PRE states */ if (curLexState != PRE_REFERENCE && curLexState != PRE_DIRECTIVE) { stateStackPush(); } - SwitchTo(PRE_REFERENCE); + switchTo(PRE_REFERENCE); } } @@ -778,14 +786,14 @@ MORE : inReference = true; if ( debugPrint ) - System.out.print( "$! : going to " + PRE_REFERENCE ); + System.out.println( " $! : going to PRE_REFERENCE" ); /* do not push PRE states */ if (curLexState != PRE_REFERENCE && curLexState != PRE_DIRECTIVE) { stateStackPush(); } - SwitchTo(PRE_REFERENCE); + switchTo(PRE_REFERENCE); } } @@ -799,7 +807,7 @@ MORE : { stateStackPush(); } - SwitchTo( IN_TEXTBLOCK ); + switchTo( IN_TEXTBLOCK ); } } @@ -814,7 +822,7 @@ MORE : { stateStackPush(); } - SwitchTo( IN_FORMAL_COMMENT); + switchTo( IN_FORMAL_COMMENT); } } @@ -828,7 +836,7 @@ MORE : { stateStackPush(); } - SwitchTo( IN_MULTI_LINE_COMMENT ); + switchTo( IN_MULTI_LINE_COMMENT ); } } @@ -850,14 +858,14 @@ MORE : } if ( debugPrint ) - System.out.print("# : going to " + DIRECTIVE ); + System.out.println(" # : going to PRE_DIRECTIVE" ); /* do not push PRE states */ if (curLexState != PRE_REFERENCE && curLexState != PRE_DIRECTIVE) { stateStackPush(); } - SwitchTo(PRE_DIRECTIVE); + switchTo(PRE_DIRECTIVE); } } } @@ -879,9 +887,9 @@ TOKEN : inComment = true; stateStackPush(); - SwitchTo(IN_SINGLE_LINE_COMMENT); + switchTo(IN_SINGLE_LINE_COMMENT); } - } + } } /* ----------------------------------------------------------------------- @@ -1070,12 +1078,12 @@ TOKEN : | <IF_DIRECTIVE: "if" | "{if}"> { - SwitchTo(DIRECTIVE); + switchTo(DIRECTIVE); } | <ELSEIF: "elseif" | "{elseif}"> { - SwitchTo(DIRECTIVE); + switchTo(DIRECTIVE); } | <ELSE: "else" | "{else}"> @@ -1194,7 +1202,7 @@ TOKEN : { if (curLexState == PRE_REFERENCE) { - SwitchTo(REFERENCE); + switchTo(REFERENCE); } } } @@ -1220,7 +1228,7 @@ TOKEN: if ( debugPrint ) System.out.print("DOT : switching to " + REFMODIFIER); - SwitchTo(REFMODIFIER); + switchTo(REFMODIFIER); } } @@ -1595,7 +1603,7 @@ boolean Directive() : * now, switch us out of PRE_DIRECTIVE */ - token_source.SwitchTo(DIRECTIVE); + token_source.switchTo(DIRECTIVE); argPos = 0; } @@ -2174,7 +2182,6 @@ void PrimaryExpression() #void : {} ( <WHITESPACE> | <NEWLINE> )* } - /* ====================================================================== Notes