diff --git a/build.xml b/build.xml index 8f309edb7..9b7c3c37f 100644 --- a/build.xml +++ b/build.xml @@ -1,5 +1,10 @@ - - - + + + + + + + + diff --git a/gunit/resources/org/antlr/v4/gunit/jUnit.stg b/gunit/resources/org/antlr/v4/gunit/jUnit.stg new file mode 100644 index 000000000..9aeb8d874 --- /dev/null +++ b/gunit/resources/org/antlr/v4/gunit/jUnit.stg @@ -0,0 +1,43 @@ +group jUnit; + +jUnitClass(className, header, options, suites) ::= << +
+ +import org.antlr.runtime.*; +import org.antlr.runtime.tree.*; +import org.junit.Test; +import org.junit.Before; +import static org.junit.Assert.*; + +public class extends org.antlr.v4.gunit.gUnitBase { + @Before public void setup() { + lexerClassName = ""; + parserClassName = ""; + + adaptorClassName = ""; + + } + +} +>> + +header(action) ::= "" + +testSuite(name,cases) ::= << +}; separator="\n\n"> !> +>> + +parserRuleTestSuccess(input,expecting) ::= << +>> + +parserRuleTestAST(ruleName,scriptLine,input,expecting) ::= << +@Test public void test_() throws Exception { + // gunit test on line + RuleReturnScope rstruct = (RuleReturnScope)execParser("", "", ); + Object actual = ((Tree)rstruct.getTree()).toStringTree(); + Object expecting = ""; + assertEquals("testing rule ", expecting, actual); +} +>> + +string(s) ::= "" diff --git a/gunit/src/org/antlr/v4/gunit/ASTVerifier.java b/gunit/src/org/antlr/v4/gunit/ASTVerifier.java new file mode 100644 index 000000000..ef722bbc7 --- /dev/null +++ b/gunit/src/org/antlr/v4/gunit/ASTVerifier.java @@ -0,0 +1,981 @@ +// $ANTLR 3.2.1-SNAPSHOT Jan 26, 2010 15:12:28 ASTVerifier.g 2010-01-27 17:03:31 + +package org.antlr.v4.gunit; + + +import org.antlr.runtime.*; +import org.antlr.runtime.tree.*;import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +public class ASTVerifier extends TreeParser { + public static final String[] tokenNames = new String[] { + "", "", "", "", "SUITE", "TEST_OK", "TEST_FAIL", "TEST_RETVAL", "TEST_STDOUT", "TEST_TREE", "TEST_ACTION", "DOC_COMMENT", "ID", "OPTIONS", "STRING", "ACTION", "RETVAL", "ML_STRING", "TREE", "FILENAME", "NESTED_RETVAL", "NESTED_AST", "STRING_", "WS", "ID_", "SL_COMMENT", "ML_COMMENT", "XDIGIT", "'gunit'", "';'", "'}'", "'='", "'@header'", "'walks'", "':'", "'OK'", "'FAIL'", "'returns'", "'->'" + }; + public static final int T__29=29; + public static final int T__28=28; + public static final int RETVAL=16; + public static final int TEST_TREE=9; + public static final int STRING_=22; + public static final int NESTED_AST=21; + public static final int ML_STRING=17; + public static final int TEST_FAIL=6; + public static final int ID=12; + public static final int EOF=-1; + public static final int NESTED_RETVAL=20; + public static final int TEST_RETVAL=7; + public static final int TEST_STDOUT=8; + public static final int ACTION=15; + public static final int TEST_OK=5; + public static final int ML_COMMENT=26; + public static final int T__30=30; + public static final int T__31=31; + public static final int T__32=32; + public static final int T__33=33; + public static final int WS=23; + public static final int T__34=34; + public static final int T__35=35; + public static final int T__36=36; + public static final int TREE=18; + public static final int T__37=37; + public static final int T__38=38; + public static final int FILENAME=19; + public static final int ID_=24; + public static final int XDIGIT=27; + public static final int SL_COMMENT=25; + public static final int DOC_COMMENT=11; + public static final int TEST_ACTION=10; + public static final int SUITE=4; + public static final int OPTIONS=13; + public static final int STRING=14; + + // delegates + // delegators + + + public ASTVerifier(TreeNodeStream input) { + this(input, new RecognizerSharedState()); + } + public ASTVerifier(TreeNodeStream input, RecognizerSharedState state) { + super(input, state); + + } + + + public String[] getTokenNames() { return ASTVerifier.tokenNames; } + public String getGrammarFileName() { return "ASTVerifier.g"; } + + + + // $ANTLR start "gUnitDef" + // ASTVerifier.g:12:1: gUnitDef : ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec | header )* ( testsuite )+ ) ; + public final void gUnitDef() throws RecognitionException { + try { + // ASTVerifier.g:13:2: ( ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec | header )* ( testsuite )+ ) ) + // ASTVerifier.g:13:4: ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec | header )* ( testsuite )+ ) + { + match(input,28,FOLLOW_28_in_gUnitDef39); + + match(input, Token.DOWN, null); + match(input,ID,FOLLOW_ID_in_gUnitDef41); + // ASTVerifier.g:13:17: ( DOC_COMMENT )? + int alt1=2; + int LA1_0 = input.LA(1); + + if ( (LA1_0==DOC_COMMENT) ) { + alt1=1; + } + switch (alt1) { + case 1 : + // ASTVerifier.g:13:17: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_gUnitDef43); + + } + break; + + } + + // ASTVerifier.g:13:30: ( optionsSpec | header )* + loop2: + do { + int alt2=3; + int LA2_0 = input.LA(1); + + if ( (LA2_0==OPTIONS) ) { + alt2=1; + } + else if ( (LA2_0==32) ) { + alt2=2; + } + + + switch (alt2) { + case 1 : + // ASTVerifier.g:13:31: optionsSpec + { + pushFollow(FOLLOW_optionsSpec_in_gUnitDef47); + optionsSpec(); + + state._fsp--; + + + } + break; + case 2 : + // ASTVerifier.g:13:43: header + { + pushFollow(FOLLOW_header_in_gUnitDef49); + header(); + + state._fsp--; + + + } + break; + + default : + break loop2; + } + } while (true); + + // ASTVerifier.g:13:52: ( testsuite )+ + int cnt3=0; + loop3: + do { + int alt3=2; + int LA3_0 = input.LA(1); + + if ( (LA3_0==SUITE) ) { + alt3=1; + } + + + switch (alt3) { + case 1 : + // ASTVerifier.g:13:52: testsuite + { + pushFollow(FOLLOW_testsuite_in_gUnitDef53); + testsuite(); + + state._fsp--; + + + } + break; + + default : + if ( cnt3 >= 1 ) break loop3; + EarlyExitException eee = + new EarlyExitException(3, input); + throw eee; + } + cnt3++; + } while (true); + + + match(input, Token.UP, null); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "gUnitDef" + + + // $ANTLR start "optionsSpec" + // ASTVerifier.g:16:1: optionsSpec : ^( OPTIONS ( option )+ ) ; + public final void optionsSpec() throws RecognitionException { + try { + // ASTVerifier.g:17:2: ( ^( OPTIONS ( option )+ ) ) + // ASTVerifier.g:17:4: ^( OPTIONS ( option )+ ) + { + match(input,OPTIONS,FOLLOW_OPTIONS_in_optionsSpec67); + + match(input, Token.DOWN, null); + // ASTVerifier.g:17:14: ( option )+ + int cnt4=0; + loop4: + do { + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0==31) ) { + alt4=1; + } + + + switch (alt4) { + case 1 : + // ASTVerifier.g:17:14: option + { + pushFollow(FOLLOW_option_in_optionsSpec69); + option(); + + state._fsp--; + + + } + break; + + default : + if ( cnt4 >= 1 ) break loop4; + EarlyExitException eee = + new EarlyExitException(4, input); + throw eee; + } + cnt4++; + } while (true); + + + match(input, Token.UP, null); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "optionsSpec" + + + // $ANTLR start "option" + // ASTVerifier.g:20:1: option : ( ^( '=' ID ID ) | ^( '=' ID STRING ) ); + public final void option() throws RecognitionException { + try { + // ASTVerifier.g:21:5: ( ^( '=' ID ID ) | ^( '=' ID STRING ) ) + int alt5=2; + int LA5_0 = input.LA(1); + + if ( (LA5_0==31) ) { + int LA5_1 = input.LA(2); + + if ( (LA5_1==DOWN) ) { + int LA5_2 = input.LA(3); + + if ( (LA5_2==ID) ) { + int LA5_3 = input.LA(4); + + if ( (LA5_3==ID) ) { + alt5=1; + } + else if ( (LA5_3==STRING) ) { + alt5=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 5, 3, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 5, 2, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 5, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 5, 0, input); + + throw nvae; + } + switch (alt5) { + case 1 : + // ASTVerifier.g:21:9: ^( '=' ID ID ) + { + match(input,31,FOLLOW_31_in_option88); + + match(input, Token.DOWN, null); + match(input,ID,FOLLOW_ID_in_option90); + match(input,ID,FOLLOW_ID_in_option92); + + match(input, Token.UP, null); + + } + break; + case 2 : + // ASTVerifier.g:22:9: ^( '=' ID STRING ) + { + match(input,31,FOLLOW_31_in_option104); + + match(input, Token.DOWN, null); + match(input,ID,FOLLOW_ID_in_option106); + match(input,STRING,FOLLOW_STRING_in_option108); + + match(input, Token.UP, null); + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "option" + + + // $ANTLR start "header" + // ASTVerifier.g:25:1: header : ^( '@header' ACTION ) ; + public final void header() throws RecognitionException { + try { + // ASTVerifier.g:25:8: ( ^( '@header' ACTION ) ) + // ASTVerifier.g:25:10: ^( '@header' ACTION ) + { + match(input,32,FOLLOW_32_in_header125); + + match(input, Token.DOWN, null); + match(input,ACTION,FOLLOW_ACTION_in_header127); + + match(input, Token.UP, null); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "header" + + + // $ANTLR start "testsuite" + // ASTVerifier.g:27:1: testsuite : ( ^( SUITE ID ID ( DOC_COMMENT )? ( testcase )+ ) | ^( SUITE ID ( DOC_COMMENT )? ( testcase )+ ) ); + public final void testsuite() throws RecognitionException { + try { + // ASTVerifier.g:28:2: ( ^( SUITE ID ID ( DOC_COMMENT )? ( testcase )+ ) | ^( SUITE ID ( DOC_COMMENT )? ( testcase )+ ) ) + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0==SUITE) ) { + int LA10_1 = input.LA(2); + + if ( (LA10_1==DOWN) ) { + int LA10_2 = input.LA(3); + + if ( (LA10_2==ID) ) { + int LA10_3 = input.LA(4); + + if ( (LA10_3==ID) ) { + alt10=1; + } + else if ( ((LA10_3>=TEST_OK && LA10_3<=DOC_COMMENT)) ) { + alt10=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 3, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 2, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 0, input); + + throw nvae; + } + switch (alt10) { + case 1 : + // ASTVerifier.g:28:4: ^( SUITE ID ID ( DOC_COMMENT )? ( testcase )+ ) + { + match(input,SUITE,FOLLOW_SUITE_in_testsuite138); + + match(input, Token.DOWN, null); + match(input,ID,FOLLOW_ID_in_testsuite140); + match(input,ID,FOLLOW_ID_in_testsuite142); + // ASTVerifier.g:28:18: ( DOC_COMMENT )? + int alt6=2; + int LA6_0 = input.LA(1); + + if ( (LA6_0==DOC_COMMENT) ) { + alt6=1; + } + switch (alt6) { + case 1 : + // ASTVerifier.g:28:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testsuite144); + + } + break; + + } + + // ASTVerifier.g:28:31: ( testcase )+ + int cnt7=0; + loop7: + do { + int alt7=2; + int LA7_0 = input.LA(1); + + if ( ((LA7_0>=TEST_OK && LA7_0<=TEST_ACTION)) ) { + alt7=1; + } + + + switch (alt7) { + case 1 : + // ASTVerifier.g:28:31: testcase + { + pushFollow(FOLLOW_testcase_in_testsuite147); + testcase(); + + state._fsp--; + + + } + break; + + default : + if ( cnt7 >= 1 ) break loop7; + EarlyExitException eee = + new EarlyExitException(7, input); + throw eee; + } + cnt7++; + } while (true); + + + match(input, Token.UP, null); + + } + break; + case 2 : + // ASTVerifier.g:29:4: ^( SUITE ID ( DOC_COMMENT )? ( testcase )+ ) + { + match(input,SUITE,FOLLOW_SUITE_in_testsuite155); + + match(input, Token.DOWN, null); + match(input,ID,FOLLOW_ID_in_testsuite157); + // ASTVerifier.g:29:15: ( DOC_COMMENT )? + int alt8=2; + int LA8_0 = input.LA(1); + + if ( (LA8_0==DOC_COMMENT) ) { + alt8=1; + } + switch (alt8) { + case 1 : + // ASTVerifier.g:29:15: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testsuite159); + + } + break; + + } + + // ASTVerifier.g:29:28: ( testcase )+ + int cnt9=0; + loop9: + do { + int alt9=2; + int LA9_0 = input.LA(1); + + if ( ((LA9_0>=TEST_OK && LA9_0<=TEST_ACTION)) ) { + alt9=1; + } + + + switch (alt9) { + case 1 : + // ASTVerifier.g:29:28: testcase + { + pushFollow(FOLLOW_testcase_in_testsuite162); + testcase(); + + state._fsp--; + + + } + break; + + default : + if ( cnt9 >= 1 ) break loop9; + EarlyExitException eee = + new EarlyExitException(9, input); + throw eee; + } + cnt9++; + } while (true); + + + match(input, Token.UP, null); + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "testsuite" + + + // $ANTLR start "testcase" + // ASTVerifier.g:32:1: testcase : ( ^( TEST_OK ( DOC_COMMENT )? input ) | ^( TEST_FAIL ( DOC_COMMENT )? input ) | ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) | ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) | ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) | ^( TEST_TREE ( DOC_COMMENT )? input TREE ) | ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) ); + public final void testcase() throws RecognitionException { + try { + // ASTVerifier.g:33:2: ( ^( TEST_OK ( DOC_COMMENT )? input ) | ^( TEST_FAIL ( DOC_COMMENT )? input ) | ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) | ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) | ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) | ^( TEST_TREE ( DOC_COMMENT )? input TREE ) | ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) ) + int alt18=7; + alt18 = dfa18.predict(input); + switch (alt18) { + case 1 : + // ASTVerifier.g:33:4: ^( TEST_OK ( DOC_COMMENT )? input ) + { + match(input,TEST_OK,FOLLOW_TEST_OK_in_testcase176); + + match(input, Token.DOWN, null); + // ASTVerifier.g:33:14: ( DOC_COMMENT )? + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0==DOC_COMMENT) ) { + alt11=1; + } + switch (alt11) { + case 1 : + // ASTVerifier.g:33:14: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase178); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase181); + input(); + + state._fsp--; + + + match(input, Token.UP, null); + + } + break; + case 2 : + // ASTVerifier.g:34:4: ^( TEST_FAIL ( DOC_COMMENT )? input ) + { + match(input,TEST_FAIL,FOLLOW_TEST_FAIL_in_testcase188); + + match(input, Token.DOWN, null); + // ASTVerifier.g:34:16: ( DOC_COMMENT )? + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0==DOC_COMMENT) ) { + alt12=1; + } + switch (alt12) { + case 1 : + // ASTVerifier.g:34:16: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase190); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase193); + input(); + + state._fsp--; + + + match(input, Token.UP, null); + + } + break; + case 3 : + // ASTVerifier.g:35:4: ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) + { + match(input,TEST_RETVAL,FOLLOW_TEST_RETVAL_in_testcase200); + + match(input, Token.DOWN, null); + // ASTVerifier.g:35:18: ( DOC_COMMENT )? + int alt13=2; + int LA13_0 = input.LA(1); + + if ( (LA13_0==DOC_COMMENT) ) { + alt13=1; + } + switch (alt13) { + case 1 : + // ASTVerifier.g:35:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase202); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase205); + input(); + + state._fsp--; + + match(input,RETVAL,FOLLOW_RETVAL_in_testcase207); + + match(input, Token.UP, null); + + } + break; + case 4 : + // ASTVerifier.g:36:4: ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) + { + match(input,TEST_STDOUT,FOLLOW_TEST_STDOUT_in_testcase214); + + match(input, Token.DOWN, null); + // ASTVerifier.g:36:18: ( DOC_COMMENT )? + int alt14=2; + int LA14_0 = input.LA(1); + + if ( (LA14_0==DOC_COMMENT) ) { + alt14=1; + } + switch (alt14) { + case 1 : + // ASTVerifier.g:36:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase216); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase219); + input(); + + state._fsp--; + + match(input,STRING,FOLLOW_STRING_in_testcase221); + + match(input, Token.UP, null); + + } + break; + case 5 : + // ASTVerifier.g:37:4: ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) + { + match(input,TEST_STDOUT,FOLLOW_TEST_STDOUT_in_testcase228); + + match(input, Token.DOWN, null); + // ASTVerifier.g:37:18: ( DOC_COMMENT )? + int alt15=2; + int LA15_0 = input.LA(1); + + if ( (LA15_0==DOC_COMMENT) ) { + alt15=1; + } + switch (alt15) { + case 1 : + // ASTVerifier.g:37:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase230); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase233); + input(); + + state._fsp--; + + match(input,ML_STRING,FOLLOW_ML_STRING_in_testcase235); + + match(input, Token.UP, null); + + } + break; + case 6 : + // ASTVerifier.g:38:4: ^( TEST_TREE ( DOC_COMMENT )? input TREE ) + { + match(input,TEST_TREE,FOLLOW_TEST_TREE_in_testcase242); + + match(input, Token.DOWN, null); + // ASTVerifier.g:38:16: ( DOC_COMMENT )? + int alt16=2; + int LA16_0 = input.LA(1); + + if ( (LA16_0==DOC_COMMENT) ) { + alt16=1; + } + switch (alt16) { + case 1 : + // ASTVerifier.g:38:16: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase244); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase247); + input(); + + state._fsp--; + + match(input,TREE,FOLLOW_TREE_in_testcase249); + + match(input, Token.UP, null); + + } + break; + case 7 : + // ASTVerifier.g:39:4: ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) + { + match(input,TEST_ACTION,FOLLOW_TEST_ACTION_in_testcase256); + + match(input, Token.DOWN, null); + // ASTVerifier.g:39:18: ( DOC_COMMENT )? + int alt17=2; + int LA17_0 = input.LA(1); + + if ( (LA17_0==DOC_COMMENT) ) { + alt17=1; + } + switch (alt17) { + case 1 : + // ASTVerifier.g:39:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase258); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase261); + input(); + + state._fsp--; + + match(input,ACTION,FOLLOW_ACTION_in_testcase263); + + match(input, Token.UP, null); + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "testcase" + + + // $ANTLR start "input" + // ASTVerifier.g:42:1: input : ( STRING | ML_STRING | FILENAME ); + public final void input() throws RecognitionException { + try { + // ASTVerifier.g:43:2: ( STRING | ML_STRING | FILENAME ) + // ASTVerifier.g: + { + if ( input.LA(1)==STRING||input.LA(1)==ML_STRING||input.LA(1)==FILENAME ) { + input.consume(); + state.errorRecovery=false; + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + throw mse; + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "input" + + // Delegated rules + + + protected DFA18 dfa18 = new DFA18(this); + static final String DFA18_eotS = + "\14\uffff"; + static final String DFA18_eofS = + "\14\uffff"; + static final String DFA18_minS = + "\1\5\3\uffff\1\2\2\uffff\1\13\2\16\2\uffff"; + static final String DFA18_maxS = + "\1\12\3\uffff\1\2\2\uffff\2\23\1\21\2\uffff"; + static final String DFA18_acceptS = + "\1\uffff\1\1\1\2\1\3\1\uffff\1\6\1\7\3\uffff\1\4\1\5"; + static final String DFA18_specialS = + "\14\uffff}>"; + static final String[] DFA18_transitionS = { + "\1\1\1\2\1\3\1\4\1\5\1\6", + "", + "", + "", + "\1\7", + "", + "", + "\1\10\2\uffff\1\11\2\uffff\1\11\1\uffff\1\11", + "\1\11\2\uffff\1\11\1\uffff\1\11", + "\1\12\2\uffff\1\13", + "", + "" + }; + + static final short[] DFA18_eot = DFA.unpackEncodedString(DFA18_eotS); + static final short[] DFA18_eof = DFA.unpackEncodedString(DFA18_eofS); + static final char[] DFA18_min = DFA.unpackEncodedStringToUnsignedChars(DFA18_minS); + static final char[] DFA18_max = DFA.unpackEncodedStringToUnsignedChars(DFA18_maxS); + static final short[] DFA18_accept = DFA.unpackEncodedString(DFA18_acceptS); + static final short[] DFA18_special = DFA.unpackEncodedString(DFA18_specialS); + static final short[][] DFA18_transition; + + static { + int numStates = DFA18_transitionS.length; + DFA18_transition = new short[numStates][]; + for (int i=0; i words = new ArrayList(); + int i = 0; + StringBuilder word = new StringBuilder(); + while ( i0 ) { + words.add(word.toString()); + word.setLength(0); + } + words.add(String.valueOf(t.charAt(i))); + i++; + continue; + } + if ( Character.isWhitespace(t.charAt(i)) ) { + // upon WS, save word + if ( word.length()>0 ) { + words.add(word.toString()); + word.setLength(0); + } + i++; + continue; + } + + // ... "x" or ...("x" + if ( t.charAt(i)=='"' && (i-1)>=0 && + (t.charAt(i-1)=='(' || Character.isWhitespace(t.charAt(i-1))) ) + { + i++; + while ( i0 ) { + words.add(word.toString()); + } + //System.out.println("words="+words); + StringBuilder buf = new StringBuilder(); + for (int j=0; j0 && !words.get(j).equals(")") && + !words.get(j-1).equals("(") ) { + buf.append(' '); + } + buf.append(words.get(j)); + } + return buf.toString(); + } + + public static void help() { + System.err.println("org.antlr.v4.gunit.Gen [-o output-dir] gunit-file"); + } +} diff --git a/gunit/src/org/antlr/v4/gunit/Interp.java b/gunit/src/org/antlr/v4/gunit/Interp.java new file mode 100644 index 000000000..6cff54d29 --- /dev/null +++ b/gunit/src/org/antlr/v4/gunit/Interp.java @@ -0,0 +1,21 @@ +package org.antlr.v4.gunit; + +import org.antlr.runtime.*; +import org.antlr.runtime.tree.BufferedTreeNodeStream; +import org.antlr.runtime.tree.Tree; + +public class Interp { + public static void main(String[] args) throws Exception { + String fileName = args[0]; + ANTLRFileStream fs = new ANTLRFileStream(fileName); + gUnitLexer lexer = new gUnitLexer(fs); + CommonTokenStream tokens = new CommonTokenStream(lexer); + gUnitParser parser = new gUnitParser(tokens); + RuleReturnScope r = parser.gUnitDef(); + System.out.println(((Tree)r.getTree()).toStringTree()); + + BufferedTreeNodeStream nodes = new BufferedTreeNodeStream(r.getTree()); + ASTVerifier verifier = new ASTVerifier(nodes); + verifier.gUnitDef(); + } +} diff --git a/gunit/src/org/antlr/v4/gunit/Semantics.java b/gunit/src/org/antlr/v4/gunit/Semantics.java new file mode 100644 index 000000000..bad3452c3 --- /dev/null +++ b/gunit/src/org/antlr/v4/gunit/Semantics.java @@ -0,0 +1,379 @@ +// $ANTLR 3.2.1-SNAPSHOT Jan 26, 2010 15:12:28 Semantics.g 2010-01-27 17:03:31 + +package org.antlr.v4.gunit; +import java.util.Map; +import java.util.HashMap; + + +import org.antlr.runtime.*; +import org.antlr.runtime.tree.*;import java.util.Stack; +import java.util.List; +import java.util.ArrayList; +import java.util.Map; +import java.util.HashMap; +public class Semantics extends TreeFilter { + public static final String[] tokenNames = new String[] { + "", "", "", "", "SUITE", "TEST_OK", "TEST_FAIL", "TEST_RETVAL", "TEST_STDOUT", "TEST_TREE", "TEST_ACTION", "DOC_COMMENT", "ID", "OPTIONS", "STRING", "ACTION", "RETVAL", "ML_STRING", "TREE", "FILENAME", "NESTED_RETVAL", "NESTED_AST", "STRING_", "WS", "ID_", "SL_COMMENT", "ML_COMMENT", "XDIGIT", "'gunit'", "';'", "'}'", "'='", "'@header'", "'walks'", "':'", "'OK'", "'FAIL'", "'returns'", "'->'" + }; + public static final int T__29=29; + public static final int T__28=28; + public static final int RETVAL=16; + public static final int TEST_TREE=9; + public static final int STRING_=22; + public static final int NESTED_AST=21; + public static final int ML_STRING=17; + public static final int TEST_FAIL=6; + public static final int ID=12; + public static final int EOF=-1; + public static final int NESTED_RETVAL=20; + public static final int TEST_RETVAL=7; + public static final int TEST_STDOUT=8; + public static final int ACTION=15; + public static final int TEST_OK=5; + public static final int ML_COMMENT=26; + public static final int T__30=30; + public static final int T__31=31; + public static final int T__32=32; + public static final int T__33=33; + public static final int WS=23; + public static final int T__34=34; + public static final int T__35=35; + public static final int T__36=36; + public static final int TREE=18; + public static final int T__37=37; + public static final int T__38=38; + public static final int FILENAME=19; + public static final int ID_=24; + public static final int XDIGIT=27; + public static final int SL_COMMENT=25; + public static final int DOC_COMMENT=11; + public static final int TEST_ACTION=10; + public static final int SUITE=4; + public static final int OPTIONS=13; + public static final int STRING=14; + + // delegates + // delegators + + + public Semantics(TreeNodeStream input) { + this(input, new RecognizerSharedState()); + } + public Semantics(TreeNodeStream input, RecognizerSharedState state) { + super(input, state); + + } + + + public String[] getTokenNames() { return Semantics.tokenNames; } + public String getGrammarFileName() { return "Semantics.g"; } + + + public String name; + public Map options = new HashMap(); + + + + // $ANTLR start "topdown" + // Semantics.g:20:1: topdown : ( optionsSpec | gUnitDef ); + public final void topdown() throws RecognitionException { + try { + // Semantics.g:21:2: ( optionsSpec | gUnitDef ) + int alt1=2; + int LA1_0 = input.LA(1); + + if ( (LA1_0==OPTIONS) ) { + alt1=1; + } + else if ( (LA1_0==28) ) { + alt1=2; + } + else { + if (state.backtracking>0) {state.failed=true; return ;} + NoViableAltException nvae = + new NoViableAltException("", 1, 0, input); + + throw nvae; + } + switch (alt1) { + case 1 : + // Semantics.g:21:4: optionsSpec + { + pushFollow(FOLLOW_optionsSpec_in_topdown50); + optionsSpec(); + + state._fsp--; + if (state.failed) return ; + + } + break; + case 2 : + // Semantics.g:22:4: gUnitDef + { + pushFollow(FOLLOW_gUnitDef_in_topdown55); + gUnitDef(); + + state._fsp--; + if (state.failed) return ; + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "topdown" + + + // $ANTLR start "gUnitDef" + // Semantics.g:25:1: gUnitDef : ^( 'gunit' ID ( . )* ) ; + public final void gUnitDef() throws RecognitionException { + CommonTree ID1=null; + + try { + // Semantics.g:26:2: ( ^( 'gunit' ID ( . )* ) ) + // Semantics.g:26:4: ^( 'gunit' ID ( . )* ) + { + match(input,28,FOLLOW_28_in_gUnitDef67); if (state.failed) return ; + + match(input, Token.DOWN, null); if (state.failed) return ; + ID1=(CommonTree)match(input,ID,FOLLOW_ID_in_gUnitDef69); if (state.failed) return ; + // Semantics.g:26:17: ( . )* + loop2: + do { + int alt2=2; + int LA2_0 = input.LA(1); + + if ( ((LA2_0>=SUITE && LA2_0<=38)) ) { + alt2=1; + } + else if ( (LA2_0==UP) ) { + alt2=2; + } + + + switch (alt2) { + case 1 : + // Semantics.g:26:17: . + { + matchAny(input); if (state.failed) return ; + + } + break; + + default : + break loop2; + } + } while (true); + + + match(input, Token.UP, null); if (state.failed) return ; + if ( state.backtracking==1 ) { + name = (ID1!=null?ID1.getText():null); + } + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "gUnitDef" + + + // $ANTLR start "optionsSpec" + // Semantics.g:29:1: optionsSpec : ^( OPTIONS ( option )+ ) ; + public final void optionsSpec() throws RecognitionException { + try { + // Semantics.g:30:2: ( ^( OPTIONS ( option )+ ) ) + // Semantics.g:30:4: ^( OPTIONS ( option )+ ) + { + match(input,OPTIONS,FOLLOW_OPTIONS_in_optionsSpec88); if (state.failed) return ; + + match(input, Token.DOWN, null); if (state.failed) return ; + // Semantics.g:30:14: ( option )+ + int cnt3=0; + loop3: + do { + int alt3=2; + int LA3_0 = input.LA(1); + + if ( (LA3_0==31) ) { + alt3=1; + } + + + switch (alt3) { + case 1 : + // Semantics.g:30:14: option + { + pushFollow(FOLLOW_option_in_optionsSpec90); + option(); + + state._fsp--; + if (state.failed) return ; + + } + break; + + default : + if ( cnt3 >= 1 ) break loop3; + if (state.backtracking>0) {state.failed=true; return ;} + EarlyExitException eee = + new EarlyExitException(3, input); + throw eee; + } + cnt3++; + } while (true); + + + match(input, Token.UP, null); if (state.failed) return ; + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "optionsSpec" + + + // $ANTLR start "option" + // Semantics.g:33:1: option : ( ^( '=' o= ID v= ID ) | ^( '=' o= ID v= STRING ) ); + public final void option() throws RecognitionException { + CommonTree o=null; + CommonTree v=null; + + try { + // Semantics.g:34:5: ( ^( '=' o= ID v= ID ) | ^( '=' o= ID v= STRING ) ) + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0==31) ) { + int LA4_1 = input.LA(2); + + if ( (LA4_1==DOWN) ) { + int LA4_2 = input.LA(3); + + if ( (LA4_2==ID) ) { + int LA4_3 = input.LA(4); + + if ( (LA4_3==ID) ) { + alt4=1; + } + else if ( (LA4_3==STRING) ) { + alt4=2; + } + else { + if (state.backtracking>0) {state.failed=true; return ;} + NoViableAltException nvae = + new NoViableAltException("", 4, 3, input); + + throw nvae; + } + } + else { + if (state.backtracking>0) {state.failed=true; return ;} + NoViableAltException nvae = + new NoViableAltException("", 4, 2, input); + + throw nvae; + } + } + else { + if (state.backtracking>0) {state.failed=true; return ;} + NoViableAltException nvae = + new NoViableAltException("", 4, 1, input); + + throw nvae; + } + } + else { + if (state.backtracking>0) {state.failed=true; return ;} + NoViableAltException nvae = + new NoViableAltException("", 4, 0, input); + + throw nvae; + } + switch (alt4) { + case 1 : + // Semantics.g:34:9: ^( '=' o= ID v= ID ) + { + match(input,31,FOLLOW_31_in_option109); if (state.failed) return ; + + match(input, Token.DOWN, null); if (state.failed) return ; + o=(CommonTree)match(input,ID,FOLLOW_ID_in_option113); if (state.failed) return ; + v=(CommonTree)match(input,ID,FOLLOW_ID_in_option117); if (state.failed) return ; + + match(input, Token.UP, null); if (state.failed) return ; + if ( state.backtracking==1 ) { + options.put((o!=null?o.getText():null), (v!=null?v.getText():null)); + } + + } + break; + case 2 : + // Semantics.g:35:9: ^( '=' o= ID v= STRING ) + { + match(input,31,FOLLOW_31_in_option132); if (state.failed) return ; + + match(input, Token.DOWN, null); if (state.failed) return ; + o=(CommonTree)match(input,ID,FOLLOW_ID_in_option136); if (state.failed) return ; + v=(CommonTree)match(input,STRING,FOLLOW_STRING_in_option140); if (state.failed) return ; + + match(input, Token.UP, null); if (state.failed) return ; + if ( state.backtracking==1 ) { + options.put((o!=null?o.getText():null), (v!=null?v.getText():null)); + } + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "option" + + // Delegated rules + + + + + public static final BitSet FOLLOW_optionsSpec_in_topdown50 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_gUnitDef_in_topdown55 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_28_in_gUnitDef67 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ID_in_gUnitDef69 = new BitSet(new long[]{0x0000007FFFFFFFF8L}); + public static final BitSet FOLLOW_OPTIONS_in_optionsSpec88 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_option_in_optionsSpec90 = new BitSet(new long[]{0x0000000080000008L}); + public static final BitSet FOLLOW_31_in_option109 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ID_in_option113 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_ID_in_option117 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_31_in_option132 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ID_in_option136 = new BitSet(new long[]{0x0000000000004000L}); + public static final BitSet FOLLOW_STRING_in_option140 = new BitSet(new long[]{0x0000000000000008L}); + +} \ No newline at end of file diff --git a/gunit/src/org/antlr/v4/gunit/gUnitBase.java b/gunit/src/org/antlr/v4/gunit/gUnitBase.java new file mode 100644 index 000000000..8d92509d3 --- /dev/null +++ b/gunit/src/org/antlr/v4/gunit/gUnitBase.java @@ -0,0 +1,49 @@ +package org.antlr.v4.gunit; + +import org.antlr.runtime.*; +import org.antlr.runtime.tree.TreeAdaptor; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; + +public class gUnitBase { + public String lexerClassName; + public String parserClassName; + public String adaptorClassName; + + public Object execParser( + String ruleName, + String input, + int scriptLine) + throws Exception + { + ANTLRStringStream is = new ANTLRStringStream(input); + Class lexerClass = Class.forName(lexerClassName); + Class[] lexArgTypes = new Class[]{CharStream.class}; + Constructor lexConstructor = lexerClass.getConstructor(lexArgTypes); + Object[] lexArgs = new Object[]{is}; + TokenSource lexer = (TokenSource)lexConstructor.newInstance(lexArgs); + is.setLine(scriptLine); + + CommonTokenStream tokens = new CommonTokenStream(lexer); + + Class parserClass = Class.forName(parserClassName); + Class[] parArgTypes = new Class[]{TokenStream.class}; + Constructor parConstructor = parserClass.getConstructor(parArgTypes); + Object[] parArgs = new Object[]{tokens}; + Parser parser = (Parser)parConstructor.newInstance(parArgs); + + // set up customized tree adaptor if necessary + if ( adaptorClassName!=null ) { + parArgTypes = new Class[]{TreeAdaptor.class}; + Method m = parserClass.getMethod("setTreeAdaptor", parArgTypes); + Class adaptorClass = Class.forName(adaptorClassName); + m.invoke(parser, adaptorClass.newInstance()); + } + + Method ruleMethod = parserClass.getMethod(ruleName); + + // INVOKE RULE + return ruleMethod.invoke(parser); + } +} diff --git a/gunit/src/org/antlr/v4/gunit/gUnitLexer.java b/gunit/src/org/antlr/v4/gunit/gUnitLexer.java new file mode 100644 index 000000000..14babe8c2 --- /dev/null +++ b/gunit/src/org/antlr/v4/gunit/gUnitLexer.java @@ -0,0 +1,1615 @@ +// $ANTLR 3.2.1-SNAPSHOT Jan 26, 2010 15:12:28 gUnit.g 2010-01-27 17:03:31 + +package org.antlr.v4.gunit; + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +public class gUnitLexer extends Lexer { + public static final int T__29=29; + public static final int T__28=28; + public static final int RETVAL=16; + public static final int TEST_TREE=9; + public static final int STRING_=22; + public static final int NESTED_AST=21; + public static final int ML_STRING=17; + public static final int TEST_FAIL=6; + public static final int ID=12; + public static final int EOF=-1; + public static final int NESTED_RETVAL=20; + public static final int TEST_RETVAL=7; + public static final int TEST_STDOUT=8; + public static final int ACTION=15; + public static final int TEST_OK=5; + public static final int ML_COMMENT=26; + public static final int T__30=30; + public static final int T__31=31; + public static final int T__32=32; + public static final int T__33=33; + public static final int WS=23; + public static final int T__34=34; + public static final int T__35=35; + public static final int T__36=36; + public static final int TREE=18; + public static final int T__37=37; + public static final int T__38=38; + public static final int FILENAME=19; + public static final int ID_=24; + public static final int XDIGIT=27; + public static final int SL_COMMENT=25; + public static final int DOC_COMMENT=11; + public static final int TEST_ACTION=10; + public static final int SUITE=4; + public static final int OPTIONS=13; + public static final int STRING=14; + + // delegates + // delegators + + public gUnitLexer() {;} + public gUnitLexer(CharStream input) { + this(input, new RecognizerSharedState()); + } + public gUnitLexer(CharStream input, RecognizerSharedState state) { + super(input,state); + + } + public String getGrammarFileName() { return "gUnit.g"; } + + // $ANTLR start "T__28" + public final void mT__28() throws RecognitionException { + try { + int _type = T__28; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:7:7: ( 'gunit' ) + // gUnit.g:7:9: 'gunit' + { + match("gunit"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__28" + + // $ANTLR start "T__29" + public final void mT__29() throws RecognitionException { + try { + int _type = T__29; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:8:7: ( ';' ) + // gUnit.g:8:9: ';' + { + match(';'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__29" + + // $ANTLR start "T__30" + public final void mT__30() throws RecognitionException { + try { + int _type = T__30; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:9:7: ( '}' ) + // gUnit.g:9:9: '}' + { + match('}'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__30" + + // $ANTLR start "T__31" + public final void mT__31() throws RecognitionException { + try { + int _type = T__31; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:10:7: ( '=' ) + // gUnit.g:10:9: '=' + { + match('='); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__31" + + // $ANTLR start "T__32" + public final void mT__32() throws RecognitionException { + try { + int _type = T__32; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:11:7: ( '@header' ) + // gUnit.g:11:9: '@header' + { + match("@header"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__32" + + // $ANTLR start "T__33" + public final void mT__33() throws RecognitionException { + try { + int _type = T__33; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:12:7: ( 'walks' ) + // gUnit.g:12:9: 'walks' + { + match("walks"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__33" + + // $ANTLR start "T__34" + public final void mT__34() throws RecognitionException { + try { + int _type = T__34; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:13:7: ( ':' ) + // gUnit.g:13:9: ':' + { + match(':'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__34" + + // $ANTLR start "T__35" + public final void mT__35() throws RecognitionException { + try { + int _type = T__35; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:14:7: ( 'OK' ) + // gUnit.g:14:9: 'OK' + { + match("OK"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__35" + + // $ANTLR start "T__36" + public final void mT__36() throws RecognitionException { + try { + int _type = T__36; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:15:7: ( 'FAIL' ) + // gUnit.g:15:9: 'FAIL' + { + match("FAIL"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__36" + + // $ANTLR start "T__37" + public final void mT__37() throws RecognitionException { + try { + int _type = T__37; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:16:7: ( 'returns' ) + // gUnit.g:16:9: 'returns' + { + match("returns"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__37" + + // $ANTLR start "T__38" + public final void mT__38() throws RecognitionException { + try { + int _type = T__38; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:17:7: ( '->' ) + // gUnit.g:17:9: '->' + { + match("->"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__38" + + // $ANTLR start "ACTION" + public final void mACTION() throws RecognitionException { + try { + int _type = ACTION; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:59:2: ( '{' ( '\\\\}' | '\\\\' ~ '}' | ~ ( '\\\\' | '}' ) )* '}' ) + // gUnit.g:59:4: '{' ( '\\\\}' | '\\\\' ~ '}' | ~ ( '\\\\' | '}' ) )* '}' + { + match('{'); + // gUnit.g:59:8: ( '\\\\}' | '\\\\' ~ '}' | ~ ( '\\\\' | '}' ) )* + loop1: + do { + int alt1=4; + int LA1_0 = input.LA(1); + + if ( (LA1_0=='\\') ) { + int LA1_2 = input.LA(2); + + if ( (LA1_2=='}') ) { + alt1=1; + } + else if ( ((LA1_2>='\u0000' && LA1_2<='|')||(LA1_2>='~' && LA1_2<='\uFFFF')) ) { + alt1=2; + } + + + } + else if ( ((LA1_0>='\u0000' && LA1_0<='[')||(LA1_0>=']' && LA1_0<='|')||(LA1_0>='~' && LA1_0<='\uFFFF')) ) { + alt1=3; + } + + + switch (alt1) { + case 1 : + // gUnit.g:59:9: '\\\\}' + { + match("\\}"); + + + } + break; + case 2 : + // gUnit.g:59:15: '\\\\' ~ '}' + { + match('\\'); + if ( (input.LA(1)>='\u0000' && input.LA(1)<='|')||(input.LA(1)>='~' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + case 3 : + // gUnit.g:59:25: ~ ( '\\\\' | '}' ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='|')||(input.LA(1)>='~' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop1; + } + } while (true); + + match('}'); + setText(getText().substring(1, getText().length()-1)); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "ACTION" + + // $ANTLR start "RETVAL" + public final void mRETVAL() throws RecognitionException { + try { + int _type = RETVAL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:63:2: ( NESTED_RETVAL ) + // gUnit.g:63:4: NESTED_RETVAL + { + mNESTED_RETVAL(); + setText(getText().substring(1, getText().length()-1)); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RETVAL" + + // $ANTLR start "NESTED_RETVAL" + public final void mNESTED_RETVAL() throws RecognitionException { + try { + // gUnit.g:67:15: ( '[' ( options {greedy=false; } : NESTED_RETVAL | . )* ']' ) + // gUnit.g:68:2: '[' ( options {greedy=false; } : NESTED_RETVAL | . )* ']' + { + match('['); + // gUnit.g:69:2: ( options {greedy=false; } : NESTED_RETVAL | . )* + loop2: + do { + int alt2=3; + int LA2_0 = input.LA(1); + + if ( (LA2_0==']') ) { + alt2=3; + } + else if ( (LA2_0=='[') ) { + alt2=1; + } + else if ( ((LA2_0>='\u0000' && LA2_0<='Z')||LA2_0=='\\'||(LA2_0>='^' && LA2_0<='\uFFFF')) ) { + alt2=2; + } + + + switch (alt2) { + case 1 : + // gUnit.g:70:4: NESTED_RETVAL + { + mNESTED_RETVAL(); + + } + break; + case 2 : + // gUnit.g:71:4: . + { + matchAny(); + + } + break; + + default : + break loop2; + } + } while (true); + + match(']'); + + } + + } + finally { + } + } + // $ANTLR end "NESTED_RETVAL" + + // $ANTLR start "TREE" + public final void mTREE() throws RecognitionException { + try { + int _type = TREE; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:76:6: ( NESTED_AST ( ( ' ' )? NESTED_AST )* ) + // gUnit.g:76:8: NESTED_AST ( ( ' ' )? NESTED_AST )* + { + mNESTED_AST(); + // gUnit.g:76:19: ( ( ' ' )? NESTED_AST )* + loop4: + do { + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0==' '||LA4_0=='(') ) { + alt4=1; + } + + + switch (alt4) { + case 1 : + // gUnit.g:76:20: ( ' ' )? NESTED_AST + { + // gUnit.g:76:20: ( ' ' )? + int alt3=2; + int LA3_0 = input.LA(1); + + if ( (LA3_0==' ') ) { + alt3=1; + } + switch (alt3) { + case 1 : + // gUnit.g:76:20: ' ' + { + match(' '); + + } + break; + + } + + mNESTED_AST(); + + } + break; + + default : + break loop4; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "TREE" + + // $ANTLR start "NESTED_AST" + public final void mNESTED_AST() throws RecognitionException { + try { + // gUnit.g:80:2: ( '(' ( NESTED_AST | STRING_ | ~ ( '(' | ')' | '\"' ) )* ')' ) + // gUnit.g:80:4: '(' ( NESTED_AST | STRING_ | ~ ( '(' | ')' | '\"' ) )* ')' + { + match('('); + // gUnit.g:81:3: ( NESTED_AST | STRING_ | ~ ( '(' | ')' | '\"' ) )* + loop5: + do { + int alt5=4; + int LA5_0 = input.LA(1); + + if ( (LA5_0=='(') ) { + alt5=1; + } + else if ( (LA5_0=='\"') ) { + alt5=2; + } + else if ( ((LA5_0>='\u0000' && LA5_0<='!')||(LA5_0>='#' && LA5_0<='\'')||(LA5_0>='*' && LA5_0<='\uFFFF')) ) { + alt5=3; + } + + + switch (alt5) { + case 1 : + // gUnit.g:81:5: NESTED_AST + { + mNESTED_AST(); + + } + break; + case 2 : + // gUnit.g:82:7: STRING_ + { + mSTRING_(); + + } + break; + case 3 : + // gUnit.g:83:5: ~ ( '(' | ')' | '\"' ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\'')||(input.LA(1)>='*' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop5; + } + } while (true); + + match(')'); + + } + + } + finally { + } + } + // $ANTLR end "NESTED_AST" + + // $ANTLR start "OPTIONS" + public final void mOPTIONS() throws RecognitionException { + try { + int _type = OPTIONS; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:88:9: ( 'options' ( WS )* '{' ) + // gUnit.g:88:11: 'options' ( WS )* '{' + { + match("options"); + + // gUnit.g:88:21: ( WS )* + loop6: + do { + int alt6=2; + int LA6_0 = input.LA(1); + + if ( ((LA6_0>='\t' && LA6_0<='\n')||LA6_0=='\r'||LA6_0==' ') ) { + alt6=1; + } + + + switch (alt6) { + case 1 : + // gUnit.g:88:21: WS + { + mWS(); + + } + break; + + default : + break loop6; + } + } while (true); + + match('{'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "OPTIONS" + + // $ANTLR start "ID" + public final void mID() throws RecognitionException { + try { + int _type = ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:90:4: ( ID_ ( '.' ID_ )* ) + // gUnit.g:90:6: ID_ ( '.' ID_ )* + { + mID_(); + // gUnit.g:90:10: ( '.' ID_ )* + loop7: + do { + int alt7=2; + int LA7_0 = input.LA(1); + + if ( (LA7_0=='.') ) { + alt7=1; + } + + + switch (alt7) { + case 1 : + // gUnit.g:90:11: '.' ID_ + { + match('.'); + mID_(); + + } + break; + + default : + break loop7; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "ID" + + // $ANTLR start "ID_" + public final void mID_() throws RecognitionException { + try { + // gUnit.g:93:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* ) + // gUnit.g:93:7: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* + { + if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + // gUnit.g:93:31: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* + loop8: + do { + int alt8=2; + int LA8_0 = input.LA(1); + + if ( ((LA8_0>='0' && LA8_0<='9')||(LA8_0>='A' && LA8_0<='Z')||LA8_0=='_'||(LA8_0>='a' && LA8_0<='z')) ) { + alt8=1; + } + + + switch (alt8) { + case 1 : + // gUnit.g: + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop8; + } + } while (true); + + + } + + } + finally { + } + } + // $ANTLR end "ID_" + + // $ANTLR start "WS" + public final void mWS() throws RecognitionException { + try { + int _type = WS; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:96:5: ( ( ' ' | '\\t' | '\\r' | '\\n' ) ) + // gUnit.g:96:9: ( ' ' | '\\t' | '\\r' | '\\n' ) + { + if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + _channel=HIDDEN; + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "WS" + + // $ANTLR start "SL_COMMENT" + public final void mSL_COMMENT() throws RecognitionException { + try { + int _type = SL_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:104:3: ( '//' (~ ( '\\r' | '\\n' ) )* ( '\\r' )? '\\n' ) + // gUnit.g:104:5: '//' (~ ( '\\r' | '\\n' ) )* ( '\\r' )? '\\n' + { + match("//"); + + // gUnit.g:104:10: (~ ( '\\r' | '\\n' ) )* + loop9: + do { + int alt9=2; + int LA9_0 = input.LA(1); + + if ( ((LA9_0>='\u0000' && LA9_0<='\t')||(LA9_0>='\u000B' && LA9_0<='\f')||(LA9_0>='\u000E' && LA9_0<='\uFFFF')) ) { + alt9=1; + } + + + switch (alt9) { + case 1 : + // gUnit.g:104:10: ~ ( '\\r' | '\\n' ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop9; + } + } while (true); + + // gUnit.g:104:24: ( '\\r' )? + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0=='\r') ) { + alt10=1; + } + switch (alt10) { + case 1 : + // gUnit.g:104:24: '\\r' + { + match('\r'); + + } + break; + + } + + match('\n'); + _channel=HIDDEN; + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "SL_COMMENT" + + // $ANTLR start "DOC_COMMENT" + public final void mDOC_COMMENT() throws RecognitionException { + try { + int _type = DOC_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:108:2: ( '/**' ( options {greedy=false; } : . )* '*/' ) + // gUnit.g:108:4: '/**' ( options {greedy=false; } : . )* '*/' + { + match("/**"); + + // gUnit.g:108:10: ( options {greedy=false; } : . )* + loop11: + do { + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0=='*') ) { + int LA11_1 = input.LA(2); + + if ( (LA11_1=='/') ) { + alt11=2; + } + else if ( ((LA11_1>='\u0000' && LA11_1<='.')||(LA11_1>='0' && LA11_1<='\uFFFF')) ) { + alt11=1; + } + + + } + else if ( ((LA11_0>='\u0000' && LA11_0<=')')||(LA11_0>='+' && LA11_0<='\uFFFF')) ) { + alt11=1; + } + + + switch (alt11) { + case 1 : + // gUnit.g:108:35: . + { + matchAny(); + + } + break; + + default : + break loop11; + } + } while (true); + + match("*/"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "DOC_COMMENT" + + // $ANTLR start "ML_COMMENT" + public final void mML_COMMENT() throws RecognitionException { + try { + int _type = ML_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:112:2: ( '/*' ~ '*' ( options {greedy=false; } : . )* '*/' ) + // gUnit.g:112:4: '/*' ~ '*' ( options {greedy=false; } : . )* '*/' + { + match("/*"); + + if ( (input.LA(1)>='\u0000' && input.LA(1)<=')')||(input.LA(1)>='+' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + // gUnit.g:112:14: ( options {greedy=false; } : . )* + loop12: + do { + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0=='*') ) { + int LA12_1 = input.LA(2); + + if ( (LA12_1=='/') ) { + alt12=2; + } + else if ( ((LA12_1>='\u0000' && LA12_1<='.')||(LA12_1>='0' && LA12_1<='\uFFFF')) ) { + alt12=1; + } + + + } + else if ( ((LA12_0>='\u0000' && LA12_0<=')')||(LA12_0>='+' && LA12_0<='\uFFFF')) ) { + alt12=1; + } + + + switch (alt12) { + case 1 : + // gUnit.g:112:39: . + { + matchAny(); + + } + break; + + default : + break loop12; + } + } while (true); + + match("*/"); + + _channel=HIDDEN; + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "ML_COMMENT" + + // $ANTLR start "STRING" + public final void mSTRING() throws RecognitionException { + try { + int _type = STRING; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:115:8: ( STRING_ ) + // gUnit.g:115:10: STRING_ + { + mSTRING_(); + setText(getText().substring(1, getText().length()-1)); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "STRING" + + // $ANTLR start "STRING_" + public final void mSTRING_() throws RecognitionException { + try { + // gUnit.g:119:2: ( '\"' ( '\\\\\"' | '\\\\' ~ '\"' | ~ ( '\\\\' | '\"' ) )+ '\"' ) + // gUnit.g:119:4: '\"' ( '\\\\\"' | '\\\\' ~ '\"' | ~ ( '\\\\' | '\"' ) )+ '\"' + { + match('\"'); + // gUnit.g:119:8: ( '\\\\\"' | '\\\\' ~ '\"' | ~ ( '\\\\' | '\"' ) )+ + int cnt13=0; + loop13: + do { + int alt13=4; + int LA13_0 = input.LA(1); + + if ( (LA13_0=='\\') ) { + int LA13_2 = input.LA(2); + + if ( (LA13_2=='\"') ) { + alt13=1; + } + else if ( ((LA13_2>='\u0000' && LA13_2<='!')||(LA13_2>='#' && LA13_2<='\uFFFF')) ) { + alt13=2; + } + + + } + else if ( ((LA13_0>='\u0000' && LA13_0<='!')||(LA13_0>='#' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) { + alt13=3; + } + + + switch (alt13) { + case 1 : + // gUnit.g:119:9: '\\\\\"' + { + match("\\\""); + + + } + break; + case 2 : + // gUnit.g:119:15: '\\\\' ~ '\"' + { + match('\\'); + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + case 3 : + // gUnit.g:119:25: ~ ( '\\\\' | '\"' ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + if ( cnt13 >= 1 ) break loop13; + EarlyExitException eee = + new EarlyExitException(13, input); + throw eee; + } + cnt13++; + } while (true); + + match('\"'); + + } + + } + finally { + } + } + // $ANTLR end "STRING_" + + // $ANTLR start "ML_STRING" + public final void mML_STRING() throws RecognitionException { + try { + int _type = ML_STRING; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:123:2: ( '<<' ( . )* '>>' ) + // gUnit.g:123:4: '<<' ( . )* '>>' + { + match("<<"); + + // gUnit.g:123:9: ( . )* + loop14: + do { + int alt14=2; + int LA14_0 = input.LA(1); + + if ( (LA14_0=='>') ) { + int LA14_1 = input.LA(2); + + if ( (LA14_1=='>') ) { + alt14=2; + } + else if ( ((LA14_1>='\u0000' && LA14_1<='=')||(LA14_1>='?' && LA14_1<='\uFFFF')) ) { + alt14=1; + } + + + } + else if ( ((LA14_0>='\u0000' && LA14_0<='=')||(LA14_0>='?' && LA14_0<='\uFFFF')) ) { + alt14=1; + } + + + switch (alt14) { + case 1 : + // gUnit.g:123:9: . + { + matchAny(); + + } + break; + + default : + break loop14; + } + } while (true); + + match(">>"); + + setText(getText().substring(2, getText().length()-2)); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "ML_STRING" + + // $ANTLR start "FILENAME" + public final void mFILENAME() throws RecognitionException { + try { + int _type = FILENAME; + int _channel = DEFAULT_TOKEN_CHANNEL; + // gUnit.g:127:2: ( '/' ID ( '/' ID )* | ID ( '/' ID )+ ) + int alt17=2; + int LA17_0 = input.LA(1); + + if ( (LA17_0=='/') ) { + alt17=1; + } + else if ( ((LA17_0>='A' && LA17_0<='Z')||LA17_0=='_'||(LA17_0>='a' && LA17_0<='z')) ) { + alt17=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 17, 0, input); + + throw nvae; + } + switch (alt17) { + case 1 : + // gUnit.g:127:4: '/' ID ( '/' ID )* + { + match('/'); + mID(); + // gUnit.g:127:11: ( '/' ID )* + loop15: + do { + int alt15=2; + int LA15_0 = input.LA(1); + + if ( (LA15_0=='/') ) { + alt15=1; + } + + + switch (alt15) { + case 1 : + // gUnit.g:127:12: '/' ID + { + match('/'); + mID(); + + } + break; + + default : + break loop15; + } + } while (true); + + + } + break; + case 2 : + // gUnit.g:128:4: ID ( '/' ID )+ + { + mID(); + // gUnit.g:128:7: ( '/' ID )+ + int cnt16=0; + loop16: + do { + int alt16=2; + int LA16_0 = input.LA(1); + + if ( (LA16_0=='/') ) { + alt16=1; + } + + + switch (alt16) { + case 1 : + // gUnit.g:128:8: '/' ID + { + match('/'); + mID(); + + } + break; + + default : + if ( cnt16 >= 1 ) break loop16; + EarlyExitException eee = + new EarlyExitException(16, input); + throw eee; + } + cnt16++; + } while (true); + + + } + break; + + } + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "FILENAME" + + // $ANTLR start "XDIGIT" + public final void mXDIGIT() throws RecognitionException { + try { + // gUnit.g:150:8: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) + // gUnit.g: + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + + } + finally { + } + } + // $ANTLR end "XDIGIT" + + public void mTokens() throws RecognitionException { + // gUnit.g:1:8: ( T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | ACTION | RETVAL | TREE | OPTIONS | ID | WS | SL_COMMENT | DOC_COMMENT | ML_COMMENT | STRING | ML_STRING | FILENAME ) + int alt18=23; + alt18 = dfa18.predict(input); + switch (alt18) { + case 1 : + // gUnit.g:1:10: T__28 + { + mT__28(); + + } + break; + case 2 : + // gUnit.g:1:16: T__29 + { + mT__29(); + + } + break; + case 3 : + // gUnit.g:1:22: T__30 + { + mT__30(); + + } + break; + case 4 : + // gUnit.g:1:28: T__31 + { + mT__31(); + + } + break; + case 5 : + // gUnit.g:1:34: T__32 + { + mT__32(); + + } + break; + case 6 : + // gUnit.g:1:40: T__33 + { + mT__33(); + + } + break; + case 7 : + // gUnit.g:1:46: T__34 + { + mT__34(); + + } + break; + case 8 : + // gUnit.g:1:52: T__35 + { + mT__35(); + + } + break; + case 9 : + // gUnit.g:1:58: T__36 + { + mT__36(); + + } + break; + case 10 : + // gUnit.g:1:64: T__37 + { + mT__37(); + + } + break; + case 11 : + // gUnit.g:1:70: T__38 + { + mT__38(); + + } + break; + case 12 : + // gUnit.g:1:76: ACTION + { + mACTION(); + + } + break; + case 13 : + // gUnit.g:1:83: RETVAL + { + mRETVAL(); + + } + break; + case 14 : + // gUnit.g:1:90: TREE + { + mTREE(); + + } + break; + case 15 : + // gUnit.g:1:95: OPTIONS + { + mOPTIONS(); + + } + break; + case 16 : + // gUnit.g:1:103: ID + { + mID(); + + } + break; + case 17 : + // gUnit.g:1:106: WS + { + mWS(); + + } + break; + case 18 : + // gUnit.g:1:109: SL_COMMENT + { + mSL_COMMENT(); + + } + break; + case 19 : + // gUnit.g:1:120: DOC_COMMENT + { + mDOC_COMMENT(); + + } + break; + case 20 : + // gUnit.g:1:132: ML_COMMENT + { + mML_COMMENT(); + + } + break; + case 21 : + // gUnit.g:1:143: STRING + { + mSTRING(); + + } + break; + case 22 : + // gUnit.g:1:150: ML_STRING + { + mML_STRING(); + + } + break; + case 23 : + // gUnit.g:1:160: FILENAME + { + mFILENAME(); + + } + break; + + } + + } + + + protected DFA18 dfa18 = new DFA18(this); + static final String DFA18_eotS = + "\1\uffff\1\27\4\uffff\1\27\1\uffff\3\27\4\uffff\2\27\4\uffff\2\27"+ + "\3\uffff\1\27\1\44\3\27\2\uffff\3\27\1\uffff\3\27\2\uffff\3\27\1"+ + "\62\2\27\1\65\1\66\1\uffff\2\27\2\uffff\2\27\1\73\1\27\2\uffff"; + static final String DFA18_eofS = + "\75\uffff"; + static final String DFA18_minS = + "\1\11\1\56\4\uffff\1\56\1\uffff\3\56\4\uffff\2\56\1\uffff\1\52\2"+ + "\uffff\2\56\1\uffff\1\101\1\uffff\5\56\1\uffff\1\0\3\56\1\uffff"+ + "\3\56\2\uffff\10\56\1\uffff\2\56\2\uffff\3\56\1\11\2\uffff"; + static final String DFA18_maxS = + "\1\175\1\172\4\uffff\1\172\1\uffff\3\172\4\uffff\2\172\1\uffff\1"+ + "\172\2\uffff\2\172\1\uffff\1\172\1\uffff\5\172\1\uffff\1\uffff\3"+ + "\172\1\uffff\3\172\2\uffff\10\172\1\uffff\2\172\2\uffff\3\172\1"+ + "\173\2\uffff"; + static final String DFA18_acceptS = + "\2\uffff\1\2\1\3\1\4\1\5\1\uffff\1\7\3\uffff\1\13\1\14\1\15\1\16"+ + "\2\uffff\1\21\1\uffff\1\25\1\26\2\uffff\1\20\1\uffff\1\27\5\uffff"+ + "\1\22\4\uffff\1\10\3\uffff\1\23\1\24\10\uffff\1\11\2\uffff\1\1\1"+ + "\6\4\uffff\1\12\1\17"; + static final String DFA18_specialS = + "\40\uffff\1\0\34\uffff}>"; + static final String[] DFA18_transitionS = { + "\2\21\2\uffff\1\21\22\uffff\1\21\1\uffff\1\23\5\uffff\1\16\4"+ + "\uffff\1\13\1\uffff\1\22\12\uffff\1\7\1\2\1\24\1\4\2\uffff\1"+ + "\5\5\20\1\11\10\20\1\10\13\20\1\15\3\uffff\1\20\1\uffff\6\20"+ + "\1\1\7\20\1\17\2\20\1\12\4\20\1\6\3\20\1\14\1\uffff\1\3", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\24\26\1"+ + "\25\5\26", + "", + "", + "", + "", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\1\32\31"+ + "\26", + "", + "\1\30\1\31\12\26\7\uffff\12\26\1\33\17\26\4\uffff\1\26\1\uffff"+ + "\32\26", + "\1\30\1\31\12\26\7\uffff\1\34\31\26\4\uffff\1\26\1\uffff\32"+ + "\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\4\26\1"+ + "\35\25\26", + "", + "", + "", + "", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\17\26\1"+ + "\36\12\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26", + "", + "\1\40\4\uffff\1\37\21\uffff\32\31\4\uffff\1\31\1\uffff\32\31", + "", + "", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\15\26\1"+ + "\41\14\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26", + "", + "\32\42\4\uffff\1\42\1\uffff\32\42", + "", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\13\26\1"+ + "\43\16\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26", + "\1\30\1\31\12\26\7\uffff\10\26\1\45\21\26\4\uffff\1\26\1\uffff"+ + "\32\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\23\26\1"+ + "\46\6\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\23\26\1"+ + "\47\6\26", + "", + "\52\51\1\50\uffd5\51", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\10\26\1"+ + "\52\21\26", + "\1\30\1\31\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\12\26\1"+ + "\54\17\26", + "", + "\1\30\1\31\12\26\7\uffff\13\26\1\55\16\26\4\uffff\1\26\1\uffff"+ + "\32\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\24\26\1"+ + "\56\5\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\10\26\1"+ + "\57\21\26", + "", + "", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\23\26\1"+ + "\60\6\26", + "\1\30\1\31\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\22\26\1"+ + "\61\7\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\21\26\1"+ + "\63\10\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\16\26\1"+ + "\64\13\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26", + "", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\15\26\1"+ + "\67\14\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\15\26\1"+ + "\70\14\26", + "", + "", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\22\26\1"+ + "\71\7\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\22\26\1"+ + "\72\7\26", + "\1\30\1\31\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26", + "\2\74\2\uffff\1\74\22\uffff\1\74\15\uffff\1\30\1\31\12\26\7"+ + "\uffff\32\26\4\uffff\1\26\1\uffff\32\26\1\74", + "", + "" + }; + + static final short[] DFA18_eot = DFA.unpackEncodedString(DFA18_eotS); + static final short[] DFA18_eof = DFA.unpackEncodedString(DFA18_eofS); + static final char[] DFA18_min = DFA.unpackEncodedStringToUnsignedChars(DFA18_minS); + static final char[] DFA18_max = DFA.unpackEncodedStringToUnsignedChars(DFA18_maxS); + static final short[] DFA18_accept = DFA.unpackEncodedString(DFA18_acceptS); + static final short[] DFA18_special = DFA.unpackEncodedString(DFA18_specialS); + static final short[][] DFA18_transition; + + static { + int numStates = DFA18_transitionS.length; + DFA18_transition = new short[numStates][]; + for (int i=0; i='\u0000' && LA18_32<=')')||(LA18_32>='+' && LA18_32<='\uFFFF')) ) {s = 41;} + + if ( s>=0 ) return s; + break; + } + NoViableAltException nvae = + new NoViableAltException(getDescription(), 18, _s, input); + error(nvae); + throw nvae; + } + } + + +} \ No newline at end of file diff --git a/gunit/src/org/antlr/v4/gunit/gUnitParser.java b/gunit/src/org/antlr/v4/gunit/gUnitParser.java new file mode 100644 index 000000000..2878d923c --- /dev/null +++ b/gunit/src/org/antlr/v4/gunit/gUnitParser.java @@ -0,0 +1,1782 @@ +// $ANTLR 3.2.1-SNAPSHOT Jan 26, 2010 15:12:28 gUnit.g 2010-01-27 17:03:30 + +package org.antlr.v4.gunit; + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + + +import org.antlr.runtime.tree.*; + +public class gUnitParser extends Parser { + public static final String[] tokenNames = new String[] { + "", "", "", "", "SUITE", "TEST_OK", "TEST_FAIL", "TEST_RETVAL", "TEST_STDOUT", "TEST_TREE", "TEST_ACTION", "DOC_COMMENT", "ID", "OPTIONS", "STRING", "ACTION", "RETVAL", "ML_STRING", "TREE", "FILENAME", "NESTED_RETVAL", "NESTED_AST", "STRING_", "WS", "ID_", "SL_COMMENT", "ML_COMMENT", "XDIGIT", "'gunit'", "';'", "'}'", "'='", "'@header'", "'walks'", "':'", "'OK'", "'FAIL'", "'returns'", "'->'" + }; + public static final int T__29=29; + public static final int RETVAL=16; + public static final int T__28=28; + public static final int TEST_TREE=9; + public static final int STRING_=22; + public static final int NESTED_AST=21; + public static final int ML_STRING=17; + public static final int TEST_FAIL=6; + public static final int ID=12; + public static final int EOF=-1; + public static final int NESTED_RETVAL=20; + public static final int TEST_RETVAL=7; + public static final int TEST_STDOUT=8; + public static final int ACTION=15; + public static final int TEST_OK=5; + public static final int ML_COMMENT=26; + public static final int T__30=30; + public static final int T__31=31; + public static final int T__32=32; + public static final int WS=23; + public static final int T__33=33; + public static final int T__34=34; + public static final int T__35=35; + public static final int TREE=18; + public static final int T__36=36; + public static final int T__37=37; + public static final int FILENAME=19; + public static final int T__38=38; + public static final int ID_=24; + public static final int XDIGIT=27; + public static final int SL_COMMENT=25; + public static final int DOC_COMMENT=11; + public static final int TEST_ACTION=10; + public static final int SUITE=4; + public static final int OPTIONS=13; + public static final int STRING=14; + + // delegates + // delegators + + + public gUnitParser(TokenStream input) { + this(input, new RecognizerSharedState()); + } + public gUnitParser(TokenStream input, RecognizerSharedState state) { + super(input, state); + + } + + protected TreeAdaptor adaptor = new CommonTreeAdaptor(); + + public void setTreeAdaptor(TreeAdaptor adaptor) { + this.adaptor = adaptor; + } + public TreeAdaptor getTreeAdaptor() { + return adaptor; + } + + public String[] getTokenNames() { return gUnitParser.tokenNames; } + public String getGrammarFileName() { return "gUnit.g"; } + + + public static class gUnitDef_return extends ParserRuleReturnScope { + CommonTree tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "gUnitDef" + // gUnit.g:16:1: gUnitDef : ( DOC_COMMENT )? 'gunit' ID ';' ( optionsSpec | header )* ( testsuite )+ -> ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec )? ( header )? ( testsuite )+ ) ; + public final gUnitParser.gUnitDef_return gUnitDef() throws RecognitionException { + gUnitParser.gUnitDef_return retval = new gUnitParser.gUnitDef_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token DOC_COMMENT1=null; + Token string_literal2=null; + Token ID3=null; + Token char_literal4=null; + gUnitParser.optionsSpec_return optionsSpec5 = null; + + gUnitParser.header_return header6 = null; + + gUnitParser.testsuite_return testsuite7 = null; + + + CommonTree DOC_COMMENT1_tree=null; + CommonTree string_literal2_tree=null; + CommonTree ID3_tree=null; + CommonTree char_literal4_tree=null; + RewriteRuleTokenStream stream_DOC_COMMENT=new RewriteRuleTokenStream(adaptor,"token DOC_COMMENT"); + RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); + RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); + RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); + RewriteRuleSubtreeStream stream_optionsSpec=new RewriteRuleSubtreeStream(adaptor,"rule optionsSpec"); + RewriteRuleSubtreeStream stream_testsuite=new RewriteRuleSubtreeStream(adaptor,"rule testsuite"); + RewriteRuleSubtreeStream stream_header=new RewriteRuleSubtreeStream(adaptor,"rule header"); + try { + // gUnit.g:17:2: ( ( DOC_COMMENT )? 'gunit' ID ';' ( optionsSpec | header )* ( testsuite )+ -> ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec )? ( header )? ( testsuite )+ ) ) + // gUnit.g:17:4: ( DOC_COMMENT )? 'gunit' ID ';' ( optionsSpec | header )* ( testsuite )+ + { + // gUnit.g:17:4: ( DOC_COMMENT )? + int alt1=2; + int LA1_0 = input.LA(1); + + if ( (LA1_0==DOC_COMMENT) ) { + alt1=1; + } + switch (alt1) { + case 1 : + // gUnit.g:17:4: DOC_COMMENT + { + DOC_COMMENT1=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_gUnitDef67); + stream_DOC_COMMENT.add(DOC_COMMENT1); + + + } + break; + + } + + string_literal2=(Token)match(input,28,FOLLOW_28_in_gUnitDef70); + stream_28.add(string_literal2); + + ID3=(Token)match(input,ID,FOLLOW_ID_in_gUnitDef72); + stream_ID.add(ID3); + + char_literal4=(Token)match(input,29,FOLLOW_29_in_gUnitDef74); + stream_29.add(char_literal4); + + // gUnit.g:17:32: ( optionsSpec | header )* + loop2: + do { + int alt2=3; + int LA2_0 = input.LA(1); + + if ( (LA2_0==OPTIONS) ) { + alt2=1; + } + else if ( (LA2_0==32) ) { + alt2=2; + } + + + switch (alt2) { + case 1 : + // gUnit.g:17:33: optionsSpec + { + pushFollow(FOLLOW_optionsSpec_in_gUnitDef77); + optionsSpec5=optionsSpec(); + + state._fsp--; + + stream_optionsSpec.add(optionsSpec5.getTree()); + + } + break; + case 2 : + // gUnit.g:17:45: header + { + pushFollow(FOLLOW_header_in_gUnitDef79); + header6=header(); + + state._fsp--; + + stream_header.add(header6.getTree()); + + } + break; + + default : + break loop2; + } + } while (true); + + // gUnit.g:17:54: ( testsuite )+ + int cnt3=0; + loop3: + do { + int alt3=2; + int LA3_0 = input.LA(1); + + if ( ((LA3_0>=DOC_COMMENT && LA3_0<=ID)) ) { + alt3=1; + } + + + switch (alt3) { + case 1 : + // gUnit.g:17:54: testsuite + { + pushFollow(FOLLOW_testsuite_in_gUnitDef83); + testsuite7=testsuite(); + + state._fsp--; + + stream_testsuite.add(testsuite7.getTree()); + + } + break; + + default : + if ( cnt3 >= 1 ) break loop3; + EarlyExitException eee = + new EarlyExitException(3, input); + throw eee; + } + cnt3++; + } while (true); + + + + // AST REWRITE + // elements: header, optionsSpec, 28, testsuite, DOC_COMMENT, ID + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 18:6: -> ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec )? ( header )? ( testsuite )+ ) + { + // gUnit.g:18:9: ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec )? ( header )? ( testsuite )+ ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_28.nextNode(), root_1); + + adaptor.addChild(root_1, stream_ID.nextNode()); + // gUnit.g:18:22: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + // gUnit.g:18:35: ( optionsSpec )? + if ( stream_optionsSpec.hasNext() ) { + adaptor.addChild(root_1, stream_optionsSpec.nextTree()); + + } + stream_optionsSpec.reset(); + // gUnit.g:18:48: ( header )? + if ( stream_header.hasNext() ) { + adaptor.addChild(root_1, stream_header.nextTree()); + + } + stream_header.reset(); + if ( !(stream_testsuite.hasNext()) ) { + throw new RewriteEarlyExitException(); + } + while ( stream_testsuite.hasNext() ) { + adaptor.addChild(root_1, stream_testsuite.nextTree()); + + } + stream_testsuite.reset(); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + + retval.stop = input.LT(-1); + + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + + } + finally { + } + return retval; + } + // $ANTLR end "gUnitDef" + + public static class optionsSpec_return extends ParserRuleReturnScope { + CommonTree tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "optionsSpec" + // gUnit.g:21:1: optionsSpec : OPTIONS ( option ';' )+ '}' -> ^( OPTIONS ( option )+ ) ; + public final gUnitParser.optionsSpec_return optionsSpec() throws RecognitionException { + gUnitParser.optionsSpec_return retval = new gUnitParser.optionsSpec_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token OPTIONS8=null; + Token char_literal10=null; + Token char_literal11=null; + gUnitParser.option_return option9 = null; + + + CommonTree OPTIONS8_tree=null; + CommonTree char_literal10_tree=null; + CommonTree char_literal11_tree=null; + RewriteRuleTokenStream stream_30=new RewriteRuleTokenStream(adaptor,"token 30"); + RewriteRuleTokenStream stream_OPTIONS=new RewriteRuleTokenStream(adaptor,"token OPTIONS"); + RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); + RewriteRuleSubtreeStream stream_option=new RewriteRuleSubtreeStream(adaptor,"rule option"); + try { + // gUnit.g:22:2: ( OPTIONS ( option ';' )+ '}' -> ^( OPTIONS ( option )+ ) ) + // gUnit.g:22:4: OPTIONS ( option ';' )+ '}' + { + OPTIONS8=(Token)match(input,OPTIONS,FOLLOW_OPTIONS_in_optionsSpec120); + stream_OPTIONS.add(OPTIONS8); + + // gUnit.g:22:12: ( option ';' )+ + int cnt4=0; + loop4: + do { + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0==ID) ) { + alt4=1; + } + + + switch (alt4) { + case 1 : + // gUnit.g:22:13: option ';' + { + pushFollow(FOLLOW_option_in_optionsSpec123); + option9=option(); + + state._fsp--; + + stream_option.add(option9.getTree()); + char_literal10=(Token)match(input,29,FOLLOW_29_in_optionsSpec125); + stream_29.add(char_literal10); + + + } + break; + + default : + if ( cnt4 >= 1 ) break loop4; + EarlyExitException eee = + new EarlyExitException(4, input); + throw eee; + } + cnt4++; + } while (true); + + char_literal11=(Token)match(input,30,FOLLOW_30_in_optionsSpec129); + stream_30.add(char_literal11); + + + + // AST REWRITE + // elements: OPTIONS, option + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 22:30: -> ^( OPTIONS ( option )+ ) + { + // gUnit.g:22:33: ^( OPTIONS ( option )+ ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_OPTIONS.nextNode(), root_1); + + if ( !(stream_option.hasNext()) ) { + throw new RewriteEarlyExitException(); + } + while ( stream_option.hasNext() ) { + adaptor.addChild(root_1, stream_option.nextTree()); + + } + stream_option.reset(); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + + retval.stop = input.LT(-1); + + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + + } + finally { + } + return retval; + } + // $ANTLR end "optionsSpec" + + public static class option_return extends ParserRuleReturnScope { + CommonTree tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "option" + // gUnit.g:25:1: option : ID '=' optionValue -> ^( '=' ID optionValue ) ; + public final gUnitParser.option_return option() throws RecognitionException { + gUnitParser.option_return retval = new gUnitParser.option_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token ID12=null; + Token char_literal13=null; + gUnitParser.optionValue_return optionValue14 = null; + + + CommonTree ID12_tree=null; + CommonTree char_literal13_tree=null; + RewriteRuleTokenStream stream_31=new RewriteRuleTokenStream(adaptor,"token 31"); + RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); + RewriteRuleSubtreeStream stream_optionValue=new RewriteRuleSubtreeStream(adaptor,"rule optionValue"); + try { + // gUnit.g:26:5: ( ID '=' optionValue -> ^( '=' ID optionValue ) ) + // gUnit.g:26:9: ID '=' optionValue + { + ID12=(Token)match(input,ID,FOLLOW_ID_in_option154); + stream_ID.add(ID12); + + char_literal13=(Token)match(input,31,FOLLOW_31_in_option156); + stream_31.add(char_literal13); + + pushFollow(FOLLOW_optionValue_in_option158); + optionValue14=optionValue(); + + state._fsp--; + + stream_optionValue.add(optionValue14.getTree()); + + + // AST REWRITE + // elements: ID, optionValue, 31 + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 26:28: -> ^( '=' ID optionValue ) + { + // gUnit.g:26:31: ^( '=' ID optionValue ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_31.nextNode(), root_1); + + adaptor.addChild(root_1, stream_ID.nextNode()); + adaptor.addChild(root_1, stream_optionValue.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + + retval.stop = input.LT(-1); + + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + + } + finally { + } + return retval; + } + // $ANTLR end "option" + + public static class optionValue_return extends ParserRuleReturnScope { + CommonTree tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "optionValue" + // gUnit.g:29:1: optionValue : ( ID | STRING ); + public final gUnitParser.optionValue_return optionValue() throws RecognitionException { + gUnitParser.optionValue_return retval = new gUnitParser.optionValue_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token set15=null; + + CommonTree set15_tree=null; + + try { + // gUnit.g:30:5: ( ID | STRING ) + // gUnit.g: + { + root_0 = (CommonTree)adaptor.nil(); + + set15=(Token)input.LT(1); + if ( input.LA(1)==ID||input.LA(1)==STRING ) { + input.consume(); + adaptor.addChild(root_0, (CommonTree)adaptor.create(set15)); + state.errorRecovery=false; + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + throw mse; + } + + + } + + retval.stop = input.LT(-1); + + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + + } + finally { + } + return retval; + } + // $ANTLR end "optionValue" + + public static class header_return extends ParserRuleReturnScope { + CommonTree tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "header" + // gUnit.g:34:1: header : '@header' ACTION -> ^( '@header' ACTION ) ; + public final gUnitParser.header_return header() throws RecognitionException { + gUnitParser.header_return retval = new gUnitParser.header_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token string_literal16=null; + Token ACTION17=null; + + CommonTree string_literal16_tree=null; + CommonTree ACTION17_tree=null; + RewriteRuleTokenStream stream_32=new RewriteRuleTokenStream(adaptor,"token 32"); + RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION"); + + try { + // gUnit.g:34:8: ( '@header' ACTION -> ^( '@header' ACTION ) ) + // gUnit.g:34:10: '@header' ACTION + { + string_literal16=(Token)match(input,32,FOLLOW_32_in_header215); + stream_32.add(string_literal16); + + ACTION17=(Token)match(input,ACTION,FOLLOW_ACTION_in_header217); + stream_ACTION.add(ACTION17); + + + + // AST REWRITE + // elements: ACTION, 32 + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 34:27: -> ^( '@header' ACTION ) + { + // gUnit.g:34:30: ^( '@header' ACTION ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot(stream_32.nextNode(), root_1); + + adaptor.addChild(root_1, stream_ACTION.nextNode()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + + retval.stop = input.LT(-1); + + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + + } + finally { + } + return retval; + } + // $ANTLR end "header" + + public static class testsuite_return extends ParserRuleReturnScope { + CommonTree tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "testsuite" + // gUnit.g:36:1: testsuite : ( ( DOC_COMMENT )? treeRule= ID 'walks' parserRule= ID ':' ( testcase )+ -> ^( SUITE $treeRule $parserRule ( DOC_COMMENT )? ( testcase )+ ) | ( DOC_COMMENT )? ID ':' ( testcase )+ -> ^( SUITE ID ( DOC_COMMENT )? ( testcase )+ ) ); + public final gUnitParser.testsuite_return testsuite() throws RecognitionException { + gUnitParser.testsuite_return retval = new gUnitParser.testsuite_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token treeRule=null; + Token parserRule=null; + Token DOC_COMMENT18=null; + Token string_literal19=null; + Token char_literal20=null; + Token DOC_COMMENT22=null; + Token ID23=null; + Token char_literal24=null; + gUnitParser.testcase_return testcase21 = null; + + gUnitParser.testcase_return testcase25 = null; + + + CommonTree treeRule_tree=null; + CommonTree parserRule_tree=null; + CommonTree DOC_COMMENT18_tree=null; + CommonTree string_literal19_tree=null; + CommonTree char_literal20_tree=null; + CommonTree DOC_COMMENT22_tree=null; + CommonTree ID23_tree=null; + CommonTree char_literal24_tree=null; + RewriteRuleTokenStream stream_DOC_COMMENT=new RewriteRuleTokenStream(adaptor,"token DOC_COMMENT"); + RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); + RewriteRuleTokenStream stream_33=new RewriteRuleTokenStream(adaptor,"token 33"); + RewriteRuleTokenStream stream_34=new RewriteRuleTokenStream(adaptor,"token 34"); + RewriteRuleSubtreeStream stream_testcase=new RewriteRuleSubtreeStream(adaptor,"rule testcase"); + try { + // gUnit.g:37:2: ( ( DOC_COMMENT )? treeRule= ID 'walks' parserRule= ID ':' ( testcase )+ -> ^( SUITE $treeRule $parserRule ( DOC_COMMENT )? ( testcase )+ ) | ( DOC_COMMENT )? ID ':' ( testcase )+ -> ^( SUITE ID ( DOC_COMMENT )? ( testcase )+ ) ) + int alt9=2; + int LA9_0 = input.LA(1); + + if ( (LA9_0==DOC_COMMENT) ) { + int LA9_1 = input.LA(2); + + if ( (LA9_1==ID) ) { + int LA9_2 = input.LA(3); + + if ( (LA9_2==33) ) { + alt9=1; + } + else if ( (LA9_2==34) ) { + alt9=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 9, 2, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 9, 1, input); + + throw nvae; + } + } + else if ( (LA9_0==ID) ) { + int LA9_2 = input.LA(2); + + if ( (LA9_2==33) ) { + alt9=1; + } + else if ( (LA9_2==34) ) { + alt9=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 9, 2, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 9, 0, input); + + throw nvae; + } + switch (alt9) { + case 1 : + // gUnit.g:37:4: ( DOC_COMMENT )? treeRule= ID 'walks' parserRule= ID ':' ( testcase )+ + { + // gUnit.g:37:4: ( DOC_COMMENT )? + int alt5=2; + int LA5_0 = input.LA(1); + + if ( (LA5_0==DOC_COMMENT) ) { + alt5=1; + } + switch (alt5) { + case 1 : + // gUnit.g:37:4: DOC_COMMENT + { + DOC_COMMENT18=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testsuite234); + stream_DOC_COMMENT.add(DOC_COMMENT18); + + + } + break; + + } + + treeRule=(Token)match(input,ID,FOLLOW_ID_in_testsuite239); + stream_ID.add(treeRule); + + string_literal19=(Token)match(input,33,FOLLOW_33_in_testsuite241); + stream_33.add(string_literal19); + + parserRule=(Token)match(input,ID,FOLLOW_ID_in_testsuite245); + stream_ID.add(parserRule); + + char_literal20=(Token)match(input,34,FOLLOW_34_in_testsuite247); + stream_34.add(char_literal20); + + // gUnit.g:37:55: ( testcase )+ + int cnt6=0; + loop6: + do { + int alt6=2; + int LA6_0 = input.LA(1); + + if ( (LA6_0==DOC_COMMENT) ) { + int LA6_2 = input.LA(2); + + if ( (LA6_2==STRING||LA6_2==ML_STRING||LA6_2==FILENAME) ) { + alt6=1; + } + + + } + else if ( (LA6_0==STRING||LA6_0==ML_STRING||LA6_0==FILENAME) ) { + alt6=1; + } + + + switch (alt6) { + case 1 : + // gUnit.g:37:55: testcase + { + pushFollow(FOLLOW_testcase_in_testsuite249); + testcase21=testcase(); + + state._fsp--; + + stream_testcase.add(testcase21.getTree()); + + } + break; + + default : + if ( cnt6 >= 1 ) break loop6; + EarlyExitException eee = + new EarlyExitException(6, input); + throw eee; + } + cnt6++; + } while (true); + + + + // AST REWRITE + // elements: treeRule, DOC_COMMENT, testcase, parserRule + // token labels: parserRule, treeRule + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleTokenStream stream_parserRule=new RewriteRuleTokenStream(adaptor,"token parserRule",parserRule); + RewriteRuleTokenStream stream_treeRule=new RewriteRuleTokenStream(adaptor,"token treeRule",treeRule); + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 38:3: -> ^( SUITE $treeRule $parserRule ( DOC_COMMENT )? ( testcase )+ ) + { + // gUnit.g:38:6: ^( SUITE $treeRule $parserRule ( DOC_COMMENT )? ( testcase )+ ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(SUITE, "SUITE"), root_1); + + adaptor.addChild(root_1, stream_treeRule.nextNode()); + adaptor.addChild(root_1, stream_parserRule.nextNode()); + // gUnit.g:38:36: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + if ( !(stream_testcase.hasNext()) ) { + throw new RewriteEarlyExitException(); + } + while ( stream_testcase.hasNext() ) { + adaptor.addChild(root_1, stream_testcase.nextTree()); + + } + stream_testcase.reset(); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + case 2 : + // gUnit.g:39:4: ( DOC_COMMENT )? ID ':' ( testcase )+ + { + // gUnit.g:39:4: ( DOC_COMMENT )? + int alt7=2; + int LA7_0 = input.LA(1); + + if ( (LA7_0==DOC_COMMENT) ) { + alt7=1; + } + switch (alt7) { + case 1 : + // gUnit.g:39:4: DOC_COMMENT + { + DOC_COMMENT22=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testsuite275); + stream_DOC_COMMENT.add(DOC_COMMENT22); + + + } + break; + + } + + ID23=(Token)match(input,ID,FOLLOW_ID_in_testsuite278); + stream_ID.add(ID23); + + char_literal24=(Token)match(input,34,FOLLOW_34_in_testsuite280); + stream_34.add(char_literal24); + + // gUnit.g:39:24: ( testcase )+ + int cnt8=0; + loop8: + do { + int alt8=2; + int LA8_0 = input.LA(1); + + if ( (LA8_0==DOC_COMMENT) ) { + int LA8_2 = input.LA(2); + + if ( (LA8_2==STRING||LA8_2==ML_STRING||LA8_2==FILENAME) ) { + alt8=1; + } + + + } + else if ( (LA8_0==STRING||LA8_0==ML_STRING||LA8_0==FILENAME) ) { + alt8=1; + } + + + switch (alt8) { + case 1 : + // gUnit.g:39:24: testcase + { + pushFollow(FOLLOW_testcase_in_testsuite282); + testcase25=testcase(); + + state._fsp--; + + stream_testcase.add(testcase25.getTree()); + + } + break; + + default : + if ( cnt8 >= 1 ) break loop8; + EarlyExitException eee = + new EarlyExitException(8, input); + throw eee; + } + cnt8++; + } while (true); + + + + // AST REWRITE + // elements: ID, DOC_COMMENT, testcase + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 39:34: -> ^( SUITE ID ( DOC_COMMENT )? ( testcase )+ ) + { + // gUnit.g:39:37: ^( SUITE ID ( DOC_COMMENT )? ( testcase )+ ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(SUITE, "SUITE"), root_1); + + adaptor.addChild(root_1, stream_ID.nextNode()); + // gUnit.g:39:48: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + if ( !(stream_testcase.hasNext()) ) { + throw new RewriteEarlyExitException(); + } + while ( stream_testcase.hasNext() ) { + adaptor.addChild(root_1, stream_testcase.nextTree()); + + } + stream_testcase.reset(); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + + } + retval.stop = input.LT(-1); + + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + + } + finally { + } + return retval; + } + // $ANTLR end "testsuite" + + public static class testcase_return extends ParserRuleReturnScope { + CommonTree tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "testcase" + // gUnit.g:42:1: testcase : ( ( DOC_COMMENT )? input 'OK' -> ^( TEST_OK ( DOC_COMMENT )? input ) | ( DOC_COMMENT )? input 'FAIL' -> ^( TEST_FAIL ( DOC_COMMENT )? input ) | ( DOC_COMMENT )? input 'returns' RETVAL -> ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) | ( DOC_COMMENT )? input '->' STRING -> ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) | ( DOC_COMMENT )? input '->' ML_STRING -> ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) | ( DOC_COMMENT )? input '->' TREE -> ^( TEST_TREE ( DOC_COMMENT )? input TREE ) | ( DOC_COMMENT )? input '->' ACTION -> ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) ); + public final gUnitParser.testcase_return testcase() throws RecognitionException { + gUnitParser.testcase_return retval = new gUnitParser.testcase_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token DOC_COMMENT26=null; + Token string_literal28=null; + Token DOC_COMMENT29=null; + Token string_literal31=null; + Token DOC_COMMENT32=null; + Token string_literal34=null; + Token RETVAL35=null; + Token DOC_COMMENT36=null; + Token string_literal38=null; + Token STRING39=null; + Token DOC_COMMENT40=null; + Token string_literal42=null; + Token ML_STRING43=null; + Token DOC_COMMENT44=null; + Token string_literal46=null; + Token TREE47=null; + Token DOC_COMMENT48=null; + Token string_literal50=null; + Token ACTION51=null; + gUnitParser.input_return input27 = null; + + gUnitParser.input_return input30 = null; + + gUnitParser.input_return input33 = null; + + gUnitParser.input_return input37 = null; + + gUnitParser.input_return input41 = null; + + gUnitParser.input_return input45 = null; + + gUnitParser.input_return input49 = null; + + + CommonTree DOC_COMMENT26_tree=null; + CommonTree string_literal28_tree=null; + CommonTree DOC_COMMENT29_tree=null; + CommonTree string_literal31_tree=null; + CommonTree DOC_COMMENT32_tree=null; + CommonTree string_literal34_tree=null; + CommonTree RETVAL35_tree=null; + CommonTree DOC_COMMENT36_tree=null; + CommonTree string_literal38_tree=null; + CommonTree STRING39_tree=null; + CommonTree DOC_COMMENT40_tree=null; + CommonTree string_literal42_tree=null; + CommonTree ML_STRING43_tree=null; + CommonTree DOC_COMMENT44_tree=null; + CommonTree string_literal46_tree=null; + CommonTree TREE47_tree=null; + CommonTree DOC_COMMENT48_tree=null; + CommonTree string_literal50_tree=null; + CommonTree ACTION51_tree=null; + RewriteRuleTokenStream stream_DOC_COMMENT=new RewriteRuleTokenStream(adaptor,"token DOC_COMMENT"); + RewriteRuleTokenStream stream_RETVAL=new RewriteRuleTokenStream(adaptor,"token RETVAL"); + RewriteRuleTokenStream stream_TREE=new RewriteRuleTokenStream(adaptor,"token TREE"); + RewriteRuleTokenStream stream_35=new RewriteRuleTokenStream(adaptor,"token 35"); + RewriteRuleTokenStream stream_36=new RewriteRuleTokenStream(adaptor,"token 36"); + RewriteRuleTokenStream stream_ML_STRING=new RewriteRuleTokenStream(adaptor,"token ML_STRING"); + RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION"); + RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING"); + RewriteRuleTokenStream stream_37=new RewriteRuleTokenStream(adaptor,"token 37"); + RewriteRuleTokenStream stream_38=new RewriteRuleTokenStream(adaptor,"token 38"); + RewriteRuleSubtreeStream stream_input=new RewriteRuleSubtreeStream(adaptor,"rule input"); + try { + // gUnit.g:43:2: ( ( DOC_COMMENT )? input 'OK' -> ^( TEST_OK ( DOC_COMMENT )? input ) | ( DOC_COMMENT )? input 'FAIL' -> ^( TEST_FAIL ( DOC_COMMENT )? input ) | ( DOC_COMMENT )? input 'returns' RETVAL -> ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) | ( DOC_COMMENT )? input '->' STRING -> ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) | ( DOC_COMMENT )? input '->' ML_STRING -> ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) | ( DOC_COMMENT )? input '->' TREE -> ^( TEST_TREE ( DOC_COMMENT )? input TREE ) | ( DOC_COMMENT )? input '->' ACTION -> ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) ) + int alt17=7; + alt17 = dfa17.predict(input); + switch (alt17) { + case 1 : + // gUnit.g:43:4: ( DOC_COMMENT )? input 'OK' + { + // gUnit.g:43:4: ( DOC_COMMENT )? + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0==DOC_COMMENT) ) { + alt10=1; + } + switch (alt10) { + case 1 : + // gUnit.g:43:4: DOC_COMMENT + { + DOC_COMMENT26=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase308); + stream_DOC_COMMENT.add(DOC_COMMENT26); + + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase311); + input27=input(); + + state._fsp--; + + stream_input.add(input27.getTree()); + string_literal28=(Token)match(input,35,FOLLOW_35_in_testcase313); + stream_35.add(string_literal28); + + + + // AST REWRITE + // elements: input, DOC_COMMENT + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 43:31: -> ^( TEST_OK ( DOC_COMMENT )? input ) + { + // gUnit.g:43:34: ^( TEST_OK ( DOC_COMMENT )? input ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEST_OK, "TEST_OK"), root_1); + + // gUnit.g:43:44: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + adaptor.addChild(root_1, stream_input.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + case 2 : + // gUnit.g:44:4: ( DOC_COMMENT )? input 'FAIL' + { + // gUnit.g:44:4: ( DOC_COMMENT )? + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0==DOC_COMMENT) ) { + alt11=1; + } + switch (alt11) { + case 1 : + // gUnit.g:44:4: DOC_COMMENT + { + DOC_COMMENT29=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase332); + stream_DOC_COMMENT.add(DOC_COMMENT29); + + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase335); + input30=input(); + + state._fsp--; + + stream_input.add(input30.getTree()); + string_literal31=(Token)match(input,36,FOLLOW_36_in_testcase337); + stream_36.add(string_literal31); + + + + // AST REWRITE + // elements: input, DOC_COMMENT + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 44:33: -> ^( TEST_FAIL ( DOC_COMMENT )? input ) + { + // gUnit.g:44:36: ^( TEST_FAIL ( DOC_COMMENT )? input ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEST_FAIL, "TEST_FAIL"), root_1); + + // gUnit.g:44:48: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + adaptor.addChild(root_1, stream_input.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + case 3 : + // gUnit.g:45:4: ( DOC_COMMENT )? input 'returns' RETVAL + { + // gUnit.g:45:4: ( DOC_COMMENT )? + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0==DOC_COMMENT) ) { + alt12=1; + } + switch (alt12) { + case 1 : + // gUnit.g:45:4: DOC_COMMENT + { + DOC_COMMENT32=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase356); + stream_DOC_COMMENT.add(DOC_COMMENT32); + + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase359); + input33=input(); + + state._fsp--; + + stream_input.add(input33.getTree()); + string_literal34=(Token)match(input,37,FOLLOW_37_in_testcase361); + stream_37.add(string_literal34); + + RETVAL35=(Token)match(input,RETVAL,FOLLOW_RETVAL_in_testcase363); + stream_RETVAL.add(RETVAL35); + + + + // AST REWRITE + // elements: DOC_COMMENT, RETVAL, input + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 45:40: -> ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) + { + // gUnit.g:45:43: ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEST_RETVAL, "TEST_RETVAL"), root_1); + + // gUnit.g:45:57: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + adaptor.addChild(root_1, stream_input.nextTree()); + adaptor.addChild(root_1, stream_RETVAL.nextNode()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + case 4 : + // gUnit.g:46:4: ( DOC_COMMENT )? input '->' STRING + { + // gUnit.g:46:4: ( DOC_COMMENT )? + int alt13=2; + int LA13_0 = input.LA(1); + + if ( (LA13_0==DOC_COMMENT) ) { + alt13=1; + } + switch (alt13) { + case 1 : + // gUnit.g:46:4: DOC_COMMENT + { + DOC_COMMENT36=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase381); + stream_DOC_COMMENT.add(DOC_COMMENT36); + + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase384); + input37=input(); + + state._fsp--; + + stream_input.add(input37.getTree()); + string_literal38=(Token)match(input,38,FOLLOW_38_in_testcase386); + stream_38.add(string_literal38); + + STRING39=(Token)match(input,STRING,FOLLOW_STRING_in_testcase388); + stream_STRING.add(STRING39); + + + + // AST REWRITE + // elements: STRING, input, DOC_COMMENT + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 46:36: -> ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) + { + // gUnit.g:46:39: ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEST_STDOUT, "TEST_STDOUT"), root_1); + + // gUnit.g:46:53: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + adaptor.addChild(root_1, stream_input.nextTree()); + adaptor.addChild(root_1, stream_STRING.nextNode()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + case 5 : + // gUnit.g:47:4: ( DOC_COMMENT )? input '->' ML_STRING + { + // gUnit.g:47:4: ( DOC_COMMENT )? + int alt14=2; + int LA14_0 = input.LA(1); + + if ( (LA14_0==DOC_COMMENT) ) { + alt14=1; + } + switch (alt14) { + case 1 : + // gUnit.g:47:4: DOC_COMMENT + { + DOC_COMMENT40=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase407); + stream_DOC_COMMENT.add(DOC_COMMENT40); + + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase410); + input41=input(); + + state._fsp--; + + stream_input.add(input41.getTree()); + string_literal42=(Token)match(input,38,FOLLOW_38_in_testcase412); + stream_38.add(string_literal42); + + ML_STRING43=(Token)match(input,ML_STRING,FOLLOW_ML_STRING_in_testcase414); + stream_ML_STRING.add(ML_STRING43); + + + + // AST REWRITE + // elements: input, ML_STRING, DOC_COMMENT + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 47:38: -> ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) + { + // gUnit.g:47:41: ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEST_STDOUT, "TEST_STDOUT"), root_1); + + // gUnit.g:47:55: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + adaptor.addChild(root_1, stream_input.nextTree()); + adaptor.addChild(root_1, stream_ML_STRING.nextNode()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + case 6 : + // gUnit.g:48:4: ( DOC_COMMENT )? input '->' TREE + { + // gUnit.g:48:4: ( DOC_COMMENT )? + int alt15=2; + int LA15_0 = input.LA(1); + + if ( (LA15_0==DOC_COMMENT) ) { + alt15=1; + } + switch (alt15) { + case 1 : + // gUnit.g:48:4: DOC_COMMENT + { + DOC_COMMENT44=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase432); + stream_DOC_COMMENT.add(DOC_COMMENT44); + + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase435); + input45=input(); + + state._fsp--; + + stream_input.add(input45.getTree()); + string_literal46=(Token)match(input,38,FOLLOW_38_in_testcase437); + stream_38.add(string_literal46); + + TREE47=(Token)match(input,TREE,FOLLOW_TREE_in_testcase439); + stream_TREE.add(TREE47); + + + + // AST REWRITE + // elements: DOC_COMMENT, input, TREE + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 48:34: -> ^( TEST_TREE ( DOC_COMMENT )? input TREE ) + { + // gUnit.g:48:37: ^( TEST_TREE ( DOC_COMMENT )? input TREE ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEST_TREE, "TEST_TREE"), root_1); + + // gUnit.g:48:49: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + adaptor.addChild(root_1, stream_input.nextTree()); + adaptor.addChild(root_1, stream_TREE.nextNode()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + case 7 : + // gUnit.g:49:4: ( DOC_COMMENT )? input '->' ACTION + { + // gUnit.g:49:4: ( DOC_COMMENT )? + int alt16=2; + int LA16_0 = input.LA(1); + + if ( (LA16_0==DOC_COMMENT) ) { + alt16=1; + } + switch (alt16) { + case 1 : + // gUnit.g:49:4: DOC_COMMENT + { + DOC_COMMENT48=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase458); + stream_DOC_COMMENT.add(DOC_COMMENT48); + + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase461); + input49=input(); + + state._fsp--; + + stream_input.add(input49.getTree()); + string_literal50=(Token)match(input,38,FOLLOW_38_in_testcase463); + stream_38.add(string_literal50); + + ACTION51=(Token)match(input,ACTION,FOLLOW_ACTION_in_testcase465); + stream_ACTION.add(ACTION51); + + + + // AST REWRITE + // elements: ACTION, input, DOC_COMMENT + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (CommonTree)adaptor.nil(); + // 49:36: -> ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) + { + // gUnit.g:49:39: ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) + { + CommonTree root_1 = (CommonTree)adaptor.nil(); + root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEST_ACTION, "TEST_ACTION"), root_1); + + // gUnit.g:49:53: ( DOC_COMMENT )? + if ( stream_DOC_COMMENT.hasNext() ) { + adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode()); + + } + stream_DOC_COMMENT.reset(); + adaptor.addChild(root_1, stream_input.nextTree()); + adaptor.addChild(root_1, stream_ACTION.nextNode()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0; + } + break; + + } + retval.stop = input.LT(-1); + + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + + } + finally { + } + return retval; + } + // $ANTLR end "testcase" + + public static class input_return extends ParserRuleReturnScope { + CommonTree tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "input" + // gUnit.g:52:1: input : ( STRING | ML_STRING | FILENAME ); + public final gUnitParser.input_return input() throws RecognitionException { + gUnitParser.input_return retval = new gUnitParser.input_return(); + retval.start = input.LT(1); + + CommonTree root_0 = null; + + Token set52=null; + + CommonTree set52_tree=null; + + try { + // gUnit.g:53:2: ( STRING | ML_STRING | FILENAME ) + // gUnit.g: + { + root_0 = (CommonTree)adaptor.nil(); + + set52=(Token)input.LT(1); + if ( input.LA(1)==STRING||input.LA(1)==ML_STRING||input.LA(1)==FILENAME ) { + input.consume(); + adaptor.addChild(root_0, (CommonTree)adaptor.create(set52)); + state.errorRecovery=false; + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + throw mse; + } + + + } + + retval.stop = input.LT(-1); + + retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); + + } + finally { + } + return retval; + } + // $ANTLR end "input" + + // Delegated rules + + + protected DFA17 dfa17 = new DFA17(this); + static final String DFA17_eotS = + "\13\uffff"; + static final String DFA17_eofS = + "\13\uffff"; + static final String DFA17_minS = + "\1\13\1\16\1\43\2\uffff\1\16\5\uffff"; + static final String DFA17_maxS = + "\2\23\1\46\2\uffff\1\22\5\uffff"; + static final String DFA17_acceptS = + "\3\uffff\1\3\1\1\1\uffff\1\2\1\5\1\4\1\6\1\7"; + static final String DFA17_specialS = + "\13\uffff}>"; + static final String[] DFA17_transitionS = { + "\1\1\2\uffff\1\2\2\uffff\1\2\1\uffff\1\2", + "\1\2\2\uffff\1\2\1\uffff\1\2", + "\1\4\1\6\1\3\1\5", + "", + "", + "\1\10\1\12\1\uffff\1\7\1\11", + "", + "", + "", + "", + "" + }; + + static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS); + static final short[] DFA17_eof = DFA.unpackEncodedString(DFA17_eofS); + static final char[] DFA17_min = DFA.unpackEncodedStringToUnsignedChars(DFA17_minS); + static final char[] DFA17_max = DFA.unpackEncodedStringToUnsignedChars(DFA17_maxS); + static final short[] DFA17_accept = DFA.unpackEncodedString(DFA17_acceptS); + static final short[] DFA17_special = DFA.unpackEncodedString(DFA17_specialS); + static final short[][] DFA17_transition; + + static { + int numStates = DFA17_transitionS.length; + DFA17_transition = new short[numStates][]; + for (int i=0; i ^( TEST_OK ( DOC_COMMENT )? input ) | ( DOC_COMMENT )? input 'FAIL' -> ^( TEST_FAIL ( DOC_COMMENT )? input ) | ( DOC_COMMENT )? input 'returns' RETVAL -> ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) | ( DOC_COMMENT )? input '->' STRING -> ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) | ( DOC_COMMENT )? input '->' ML_STRING -> ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) | ( DOC_COMMENT )? input '->' TREE -> ^( TEST_TREE ( DOC_COMMENT )? input TREE ) | ( DOC_COMMENT )? input '->' ACTION -> ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) );"; + } + } + + + public static final BitSet FOLLOW_DOC_COMMENT_in_gUnitDef67 = new BitSet(new long[]{0x0000000010000000L}); + public static final BitSet FOLLOW_28_in_gUnitDef70 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_ID_in_gUnitDef72 = new BitSet(new long[]{0x0000000020000000L}); + public static final BitSet FOLLOW_29_in_gUnitDef74 = new BitSet(new long[]{0x0000000100003800L}); + public static final BitSet FOLLOW_optionsSpec_in_gUnitDef77 = new BitSet(new long[]{0x0000000100003800L}); + public static final BitSet FOLLOW_header_in_gUnitDef79 = new BitSet(new long[]{0x0000000100003800L}); + public static final BitSet FOLLOW_testsuite_in_gUnitDef83 = new BitSet(new long[]{0x0000000100003802L}); + public static final BitSet FOLLOW_OPTIONS_in_optionsSpec120 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_option_in_optionsSpec123 = new BitSet(new long[]{0x0000000020000000L}); + public static final BitSet FOLLOW_29_in_optionsSpec125 = new BitSet(new long[]{0x0000000040001000L}); + public static final BitSet FOLLOW_30_in_optionsSpec129 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ID_in_option154 = new BitSet(new long[]{0x0000000080000000L}); + public static final BitSet FOLLOW_31_in_option156 = new BitSet(new long[]{0x0000000000005000L}); + public static final BitSet FOLLOW_optionValue_in_option158 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_set_in_optionValue0 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_32_in_header215 = new BitSet(new long[]{0x0000000000008000L}); + public static final BitSet FOLLOW_ACTION_in_header217 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testsuite234 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_ID_in_testsuite239 = new BitSet(new long[]{0x0000000200000000L}); + public static final BitSet FOLLOW_33_in_testsuite241 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_ID_in_testsuite245 = new BitSet(new long[]{0x0000000400000000L}); + public static final BitSet FOLLOW_34_in_testsuite247 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_testcase_in_testsuite249 = new BitSet(new long[]{0x00000000000A4802L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testsuite275 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_ID_in_testsuite278 = new BitSet(new long[]{0x0000000400000000L}); + public static final BitSet FOLLOW_34_in_testsuite280 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_testcase_in_testsuite282 = new BitSet(new long[]{0x00000000000A4802L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase308 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_input_in_testcase311 = new BitSet(new long[]{0x0000000800000000L}); + public static final BitSet FOLLOW_35_in_testcase313 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase332 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_input_in_testcase335 = new BitSet(new long[]{0x0000001000000000L}); + public static final BitSet FOLLOW_36_in_testcase337 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase356 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_input_in_testcase359 = new BitSet(new long[]{0x0000002000000000L}); + public static final BitSet FOLLOW_37_in_testcase361 = new BitSet(new long[]{0x0000000000010000L}); + public static final BitSet FOLLOW_RETVAL_in_testcase363 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase381 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_input_in_testcase384 = new BitSet(new long[]{0x0000004000000000L}); + public static final BitSet FOLLOW_38_in_testcase386 = new BitSet(new long[]{0x0000000000004000L}); + public static final BitSet FOLLOW_STRING_in_testcase388 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase407 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_input_in_testcase410 = new BitSet(new long[]{0x0000004000000000L}); + public static final BitSet FOLLOW_38_in_testcase412 = new BitSet(new long[]{0x0000000000020000L}); + public static final BitSet FOLLOW_ML_STRING_in_testcase414 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase432 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_input_in_testcase435 = new BitSet(new long[]{0x0000004000000000L}); + public static final BitSet FOLLOW_38_in_testcase437 = new BitSet(new long[]{0x0000000000040000L}); + public static final BitSet FOLLOW_TREE_in_testcase439 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase458 = new BitSet(new long[]{0x00000000000A4800L}); + public static final BitSet FOLLOW_input_in_testcase461 = new BitSet(new long[]{0x0000004000000000L}); + public static final BitSet FOLLOW_38_in_testcase463 = new BitSet(new long[]{0x0000000000008000L}); + public static final BitSet FOLLOW_ACTION_in_testcase465 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_set_in_input0 = new BitSet(new long[]{0x0000000000000002L}); + +} \ No newline at end of file diff --git a/gunit/src/org/antlr/v4/gunit/jUnitGen.java b/gunit/src/org/antlr/v4/gunit/jUnitGen.java new file mode 100644 index 000000000..89f4539ad --- /dev/null +++ b/gunit/src/org/antlr/v4/gunit/jUnitGen.java @@ -0,0 +1,1180 @@ +// $ANTLR 3.2.1-SNAPSHOT Jan 26, 2010 15:12:28 jUnitGen.g 2010-01-27 17:03:31 + +package org.antlr.v4.gunit; + + +import org.antlr.runtime.*; +import org.antlr.runtime.tree.*;import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +import org.antlr.stringtemplate.*; +import org.antlr.stringtemplate.language.*; +import java.util.HashMap; +public class jUnitGen extends TreeParser { + public static final String[] tokenNames = new String[] { + "", "", "", "", "SUITE", "TEST_OK", "TEST_FAIL", "TEST_RETVAL", "TEST_STDOUT", "TEST_TREE", "TEST_ACTION", "DOC_COMMENT", "ID", "OPTIONS", "STRING", "ACTION", "RETVAL", "ML_STRING", "TREE", "FILENAME", "NESTED_RETVAL", "NESTED_AST", "STRING_", "WS", "ID_", "SL_COMMENT", "ML_COMMENT", "XDIGIT", "'gunit'", "';'", "'}'", "'='", "'@header'", "'walks'", "':'", "'OK'", "'FAIL'", "'returns'", "'->'" + }; + public static final int T__29=29; + public static final int T__28=28; + public static final int RETVAL=16; + public static final int TEST_TREE=9; + public static final int STRING_=22; + public static final int NESTED_AST=21; + public static final int ML_STRING=17; + public static final int TEST_FAIL=6; + public static final int ID=12; + public static final int EOF=-1; + public static final int NESTED_RETVAL=20; + public static final int TEST_RETVAL=7; + public static final int TEST_STDOUT=8; + public static final int ACTION=15; + public static final int TEST_OK=5; + public static final int ML_COMMENT=26; + public static final int T__30=30; + public static final int T__31=31; + public static final int T__32=32; + public static final int T__33=33; + public static final int WS=23; + public static final int T__34=34; + public static final int T__35=35; + public static final int T__36=36; + public static final int TREE=18; + public static final int T__37=37; + public static final int T__38=38; + public static final int FILENAME=19; + public static final int ID_=24; + public static final int XDIGIT=27; + public static final int SL_COMMENT=25; + public static final int DOC_COMMENT=11; + public static final int TEST_ACTION=10; + public static final int SUITE=4; + public static final int OPTIONS=13; + public static final int STRING=14; + + // delegates + // delegators + + + public jUnitGen(TreeNodeStream input) { + this(input, new RecognizerSharedState()); + } + public jUnitGen(TreeNodeStream input, RecognizerSharedState state) { + super(input, state); + + } + + protected StringTemplateGroup templateLib = + new StringTemplateGroup("jUnitGenTemplates", AngleBracketTemplateLexer.class); + + public void setTemplateLib(StringTemplateGroup templateLib) { + this.templateLib = templateLib; + } + public StringTemplateGroup getTemplateLib() { + return templateLib; + } + /** allows convenient multi-value initialization: + * "new STAttrMap().put(...).put(...)" + */ + public static class STAttrMap extends HashMap { + public STAttrMap put(String attrName, Object value) { + super.put(attrName, value); + return this; + } + public STAttrMap put(String attrName, int value) { + super.put(attrName, new Integer(value)); + return this; + } + } + + public String[] getTokenNames() { return jUnitGen.tokenNames; } + public String getGrammarFileName() { return "jUnitGen.g"; } + + + public static class gUnitDef_return extends TreeRuleReturnScope { + public StringTemplate st; + public Object getTemplate() { return st; } + public String toString() { return st==null?null:st.toString(); } + }; + + // $ANTLR start "gUnitDef" + // jUnitGen.g:13:1: gUnitDef : ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec | header )* (suites+= testsuite )+ ) -> jUnitClass(className=$ID.textheader=$header.stsuites=$suites); + public final jUnitGen.gUnitDef_return gUnitDef() throws RecognitionException { + jUnitGen.gUnitDef_return retval = new jUnitGen.gUnitDef_return(); + retval.start = input.LT(1); + + CommonTree ID1=null; + List list_suites=null; + jUnitGen.header_return header2 = null; + + RuleReturnScope suites = null; + try { + // jUnitGen.g:14:2: ( ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec | header )* (suites+= testsuite )+ ) -> jUnitClass(className=$ID.textheader=$header.stsuites=$suites)) + // jUnitGen.g:14:4: ^( 'gunit' ID ( DOC_COMMENT )? ( optionsSpec | header )* (suites+= testsuite )+ ) + { + match(input,28,FOLLOW_28_in_gUnitDef45); + + match(input, Token.DOWN, null); + ID1=(CommonTree)match(input,ID,FOLLOW_ID_in_gUnitDef47); + // jUnitGen.g:14:17: ( DOC_COMMENT )? + int alt1=2; + int LA1_0 = input.LA(1); + + if ( (LA1_0==DOC_COMMENT) ) { + alt1=1; + } + switch (alt1) { + case 1 : + // jUnitGen.g:14:17: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_gUnitDef49); + + } + break; + + } + + // jUnitGen.g:14:30: ( optionsSpec | header )* + loop2: + do { + int alt2=3; + int LA2_0 = input.LA(1); + + if ( (LA2_0==OPTIONS) ) { + alt2=1; + } + else if ( (LA2_0==32) ) { + alt2=2; + } + + + switch (alt2) { + case 1 : + // jUnitGen.g:14:31: optionsSpec + { + pushFollow(FOLLOW_optionsSpec_in_gUnitDef53); + optionsSpec(); + + state._fsp--; + + + } + break; + case 2 : + // jUnitGen.g:14:43: header + { + pushFollow(FOLLOW_header_in_gUnitDef55); + header2=header(); + + state._fsp--; + + + } + break; + + default : + break loop2; + } + } while (true); + + // jUnitGen.g:14:58: (suites+= testsuite )+ + int cnt3=0; + loop3: + do { + int alt3=2; + int LA3_0 = input.LA(1); + + if ( (LA3_0==SUITE) ) { + alt3=1; + } + + + switch (alt3) { + case 1 : + // jUnitGen.g:14:58: suites+= testsuite + { + pushFollow(FOLLOW_testsuite_in_gUnitDef61); + suites=testsuite(); + + state._fsp--; + + if (list_suites==null) list_suites=new ArrayList(); + list_suites.add(suites.getTemplate()); + + + } + break; + + default : + if ( cnt3 >= 1 ) break loop3; + EarlyExitException eee = + new EarlyExitException(3, input); + throw eee; + } + cnt3++; + } while (true); + + + match(input, Token.UP, null); + + + // TEMPLATE REWRITE + // 15:3: -> jUnitClass(className=$ID.textheader=$header.stsuites=$suites) + { + retval.st = templateLib.getInstanceOf("jUnitClass", + new STAttrMap().put("className", (ID1!=null?ID1.getText():null)).put("header", (header2!=null?header2.st:null)).put("suites", list_suites)); + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return retval; + } + // $ANTLR end "gUnitDef" + + public static class optionsSpec_return extends TreeRuleReturnScope { + public StringTemplate st; + public Object getTemplate() { return st; } + public String toString() { return st==null?null:st.toString(); } + }; + + // $ANTLR start "optionsSpec" + // jUnitGen.g:18:1: optionsSpec : ^( OPTIONS ( option )+ ) ; + public final jUnitGen.optionsSpec_return optionsSpec() throws RecognitionException { + jUnitGen.optionsSpec_return retval = new jUnitGen.optionsSpec_return(); + retval.start = input.LT(1); + + try { + // jUnitGen.g:19:2: ( ^( OPTIONS ( option )+ ) ) + // jUnitGen.g:19:4: ^( OPTIONS ( option )+ ) + { + match(input,OPTIONS,FOLLOW_OPTIONS_in_optionsSpec96); + + match(input, Token.DOWN, null); + // jUnitGen.g:19:14: ( option )+ + int cnt4=0; + loop4: + do { + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0==31) ) { + alt4=1; + } + + + switch (alt4) { + case 1 : + // jUnitGen.g:19:14: option + { + pushFollow(FOLLOW_option_in_optionsSpec98); + option(); + + state._fsp--; + + + } + break; + + default : + if ( cnt4 >= 1 ) break loop4; + EarlyExitException eee = + new EarlyExitException(4, input); + throw eee; + } + cnt4++; + } while (true); + + + match(input, Token.UP, null); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return retval; + } + // $ANTLR end "optionsSpec" + + public static class option_return extends TreeRuleReturnScope { + public StringTemplate st; + public Object getTemplate() { return st; } + public String toString() { return st==null?null:st.toString(); } + }; + + // $ANTLR start "option" + // jUnitGen.g:22:1: option : ( ^( '=' ID ID ) | ^( '=' ID STRING ) ); + public final jUnitGen.option_return option() throws RecognitionException { + jUnitGen.option_return retval = new jUnitGen.option_return(); + retval.start = input.LT(1); + + try { + // jUnitGen.g:23:5: ( ^( '=' ID ID ) | ^( '=' ID STRING ) ) + int alt5=2; + int LA5_0 = input.LA(1); + + if ( (LA5_0==31) ) { + int LA5_1 = input.LA(2); + + if ( (LA5_1==DOWN) ) { + int LA5_2 = input.LA(3); + + if ( (LA5_2==ID) ) { + int LA5_3 = input.LA(4); + + if ( (LA5_3==ID) ) { + alt5=1; + } + else if ( (LA5_3==STRING) ) { + alt5=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 5, 3, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 5, 2, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 5, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 5, 0, input); + + throw nvae; + } + switch (alt5) { + case 1 : + // jUnitGen.g:23:9: ^( '=' ID ID ) + { + match(input,31,FOLLOW_31_in_option117); + + match(input, Token.DOWN, null); + match(input,ID,FOLLOW_ID_in_option119); + match(input,ID,FOLLOW_ID_in_option121); + + match(input, Token.UP, null); + + } + break; + case 2 : + // jUnitGen.g:24:9: ^( '=' ID STRING ) + { + match(input,31,FOLLOW_31_in_option133); + + match(input, Token.DOWN, null); + match(input,ID,FOLLOW_ID_in_option135); + match(input,STRING,FOLLOW_STRING_in_option137); + + match(input, Token.UP, null); + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return retval; + } + // $ANTLR end "option" + + public static class header_return extends TreeRuleReturnScope { + public StringTemplate st; + public Object getTemplate() { return st; } + public String toString() { return st==null?null:st.toString(); } + }; + + // $ANTLR start "header" + // jUnitGen.g:27:1: header : ^( '@header' ACTION ) -> header(action=$ACTION.text); + public final jUnitGen.header_return header() throws RecognitionException { + jUnitGen.header_return retval = new jUnitGen.header_return(); + retval.start = input.LT(1); + + CommonTree ACTION3=null; + + try { + // jUnitGen.g:27:8: ( ^( '@header' ACTION ) -> header(action=$ACTION.text)) + // jUnitGen.g:27:10: ^( '@header' ACTION ) + { + match(input,32,FOLLOW_32_in_header154); + + match(input, Token.DOWN, null); + ACTION3=(CommonTree)match(input,ACTION,FOLLOW_ACTION_in_header156); + + match(input, Token.UP, null); + + + // TEMPLATE REWRITE + // 27:30: -> header(action=$ACTION.text) + { + retval.st = templateLib.getInstanceOf("header", + new STAttrMap().put("action", (ACTION3!=null?ACTION3.getText():null))); + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return retval; + } + // $ANTLR end "header" + + public static class testsuite_return extends TreeRuleReturnScope { + public StringTemplate st; + public Object getTemplate() { return st; } + public String toString() { return st==null?null:st.toString(); } + }; + + // $ANTLR start "testsuite" + // jUnitGen.g:29:1: testsuite : ( ^( SUITE rule= ID ID ( DOC_COMMENT )? (cases+= testcase[$rule.text] )+ ) | ^( SUITE rule= ID ( DOC_COMMENT )? (cases+= testcase[$rule.text] )+ ) -> testSuite(name=$rule.textcases=$cases)); + public final jUnitGen.testsuite_return testsuite() throws RecognitionException { + jUnitGen.testsuite_return retval = new jUnitGen.testsuite_return(); + retval.start = input.LT(1); + + CommonTree rule=null; + List list_cases=null; + RuleReturnScope cases = null; + try { + // jUnitGen.g:30:2: ( ^( SUITE rule= ID ID ( DOC_COMMENT )? (cases+= testcase[$rule.text] )+ ) | ^( SUITE rule= ID ( DOC_COMMENT )? (cases+= testcase[$rule.text] )+ ) -> testSuite(name=$rule.textcases=$cases)) + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0==SUITE) ) { + int LA10_1 = input.LA(2); + + if ( (LA10_1==DOWN) ) { + int LA10_2 = input.LA(3); + + if ( (LA10_2==ID) ) { + int LA10_3 = input.LA(4); + + if ( (LA10_3==ID) ) { + alt10=1; + } + else if ( ((LA10_3>=TEST_OK && LA10_3<=DOC_COMMENT)) ) { + alt10=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 3, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 2, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 0, input); + + throw nvae; + } + switch (alt10) { + case 1 : + // jUnitGen.g:30:4: ^( SUITE rule= ID ID ( DOC_COMMENT )? (cases+= testcase[$rule.text] )+ ) + { + match(input,SUITE,FOLLOW_SUITE_in_testsuite176); + + match(input, Token.DOWN, null); + rule=(CommonTree)match(input,ID,FOLLOW_ID_in_testsuite180); + match(input,ID,FOLLOW_ID_in_testsuite182); + // jUnitGen.g:30:23: ( DOC_COMMENT )? + int alt6=2; + int LA6_0 = input.LA(1); + + if ( (LA6_0==DOC_COMMENT) ) { + alt6=1; + } + switch (alt6) { + case 1 : + // jUnitGen.g:30:23: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testsuite184); + + } + break; + + } + + // jUnitGen.g:30:41: (cases+= testcase[$rule.text] )+ + int cnt7=0; + loop7: + do { + int alt7=2; + int LA7_0 = input.LA(1); + + if ( ((LA7_0>=TEST_OK && LA7_0<=TEST_ACTION)) ) { + alt7=1; + } + + + switch (alt7) { + case 1 : + // jUnitGen.g:30:41: cases+= testcase[$rule.text] + { + pushFollow(FOLLOW_testcase_in_testsuite189); + cases=testcase((rule!=null?rule.getText():null)); + + state._fsp--; + + if (list_cases==null) list_cases=new ArrayList(); + list_cases.add(cases.getTemplate()); + + + } + break; + + default : + if ( cnt7 >= 1 ) break loop7; + EarlyExitException eee = + new EarlyExitException(7, input); + throw eee; + } + cnt7++; + } while (true); + + + match(input, Token.UP, null); + + } + break; + case 2 : + // jUnitGen.g:31:4: ^( SUITE rule= ID ( DOC_COMMENT )? (cases+= testcase[$rule.text] )+ ) + { + match(input,SUITE,FOLLOW_SUITE_in_testsuite198); + + match(input, Token.DOWN, null); + rule=(CommonTree)match(input,ID,FOLLOW_ID_in_testsuite202); + // jUnitGen.g:31:23: ( DOC_COMMENT )? + int alt8=2; + int LA8_0 = input.LA(1); + + if ( (LA8_0==DOC_COMMENT) ) { + alt8=1; + } + switch (alt8) { + case 1 : + // jUnitGen.g:31:23: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testsuite207); + + } + break; + + } + + // jUnitGen.g:31:41: (cases+= testcase[$rule.text] )+ + int cnt9=0; + loop9: + do { + int alt9=2; + int LA9_0 = input.LA(1); + + if ( ((LA9_0>=TEST_OK && LA9_0<=TEST_ACTION)) ) { + alt9=1; + } + + + switch (alt9) { + case 1 : + // jUnitGen.g:31:41: cases+= testcase[$rule.text] + { + pushFollow(FOLLOW_testcase_in_testsuite212); + cases=testcase((rule!=null?rule.getText():null)); + + state._fsp--; + + if (list_cases==null) list_cases=new ArrayList(); + list_cases.add(cases.getTemplate()); + + + } + break; + + default : + if ( cnt9 >= 1 ) break loop9; + EarlyExitException eee = + new EarlyExitException(9, input); + throw eee; + } + cnt9++; + } while (true); + + + match(input, Token.UP, null); + + + // TEMPLATE REWRITE + // 32:3: -> testSuite(name=$rule.textcases=$cases) + { + retval.st = templateLib.getInstanceOf("testSuite", + new STAttrMap().put("name", (rule!=null?rule.getText():null)).put("cases", list_cases)); + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return retval; + } + // $ANTLR end "testsuite" + + public static class testcase_return extends TreeRuleReturnScope { + public StringTemplate st; + public Object getTemplate() { return st; } + public String toString() { return st==null?null:st.toString(); } + }; + + // $ANTLR start "testcase" + // jUnitGen.g:35:1: testcase[String ruleName] : ( ^( TEST_OK ( DOC_COMMENT )? input ) | ^( TEST_FAIL ( DOC_COMMENT )? input ) | ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) | ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) | ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) | ^( TEST_TREE ( DOC_COMMENT )? input TREE ) -> parserRuleTestAST(ruleName=$ruleNameinput=$input.stexpecting=Gen.normalizeTreeSpec($TREE.text)scriptLine=$input.start.getLine()) | ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) ); + public final jUnitGen.testcase_return testcase(String ruleName) throws RecognitionException { + jUnitGen.testcase_return retval = new jUnitGen.testcase_return(); + retval.start = input.LT(1); + + CommonTree TREE5=null; + jUnitGen.input_return input4 = null; + + + try { + // jUnitGen.g:36:2: ( ^( TEST_OK ( DOC_COMMENT )? input ) | ^( TEST_FAIL ( DOC_COMMENT )? input ) | ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) | ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) | ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) | ^( TEST_TREE ( DOC_COMMENT )? input TREE ) -> parserRuleTestAST(ruleName=$ruleNameinput=$input.stexpecting=Gen.normalizeTreeSpec($TREE.text)scriptLine=$input.start.getLine()) | ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) ) + int alt18=7; + alt18 = dfa18.predict(input); + switch (alt18) { + case 1 : + // jUnitGen.g:36:4: ^( TEST_OK ( DOC_COMMENT )? input ) + { + match(input,TEST_OK,FOLLOW_TEST_OK_in_testcase244); + + match(input, Token.DOWN, null); + // jUnitGen.g:36:14: ( DOC_COMMENT )? + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0==DOC_COMMENT) ) { + alt11=1; + } + switch (alt11) { + case 1 : + // jUnitGen.g:36:14: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase246); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase249); + input(); + + state._fsp--; + + + match(input, Token.UP, null); + + } + break; + case 2 : + // jUnitGen.g:37:4: ^( TEST_FAIL ( DOC_COMMENT )? input ) + { + match(input,TEST_FAIL,FOLLOW_TEST_FAIL_in_testcase256); + + match(input, Token.DOWN, null); + // jUnitGen.g:37:16: ( DOC_COMMENT )? + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0==DOC_COMMENT) ) { + alt12=1; + } + switch (alt12) { + case 1 : + // jUnitGen.g:37:16: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase258); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase261); + input(); + + state._fsp--; + + + match(input, Token.UP, null); + + } + break; + case 3 : + // jUnitGen.g:38:4: ^( TEST_RETVAL ( DOC_COMMENT )? input RETVAL ) + { + match(input,TEST_RETVAL,FOLLOW_TEST_RETVAL_in_testcase268); + + match(input, Token.DOWN, null); + // jUnitGen.g:38:18: ( DOC_COMMENT )? + int alt13=2; + int LA13_0 = input.LA(1); + + if ( (LA13_0==DOC_COMMENT) ) { + alt13=1; + } + switch (alt13) { + case 1 : + // jUnitGen.g:38:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase270); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase273); + input(); + + state._fsp--; + + match(input,RETVAL,FOLLOW_RETVAL_in_testcase275); + + match(input, Token.UP, null); + + } + break; + case 4 : + // jUnitGen.g:39:4: ^( TEST_STDOUT ( DOC_COMMENT )? input STRING ) + { + match(input,TEST_STDOUT,FOLLOW_TEST_STDOUT_in_testcase282); + + match(input, Token.DOWN, null); + // jUnitGen.g:39:18: ( DOC_COMMENT )? + int alt14=2; + int LA14_0 = input.LA(1); + + if ( (LA14_0==DOC_COMMENT) ) { + alt14=1; + } + switch (alt14) { + case 1 : + // jUnitGen.g:39:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase284); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase287); + input(); + + state._fsp--; + + match(input,STRING,FOLLOW_STRING_in_testcase289); + + match(input, Token.UP, null); + + } + break; + case 5 : + // jUnitGen.g:40:4: ^( TEST_STDOUT ( DOC_COMMENT )? input ML_STRING ) + { + match(input,TEST_STDOUT,FOLLOW_TEST_STDOUT_in_testcase296); + + match(input, Token.DOWN, null); + // jUnitGen.g:40:18: ( DOC_COMMENT )? + int alt15=2; + int LA15_0 = input.LA(1); + + if ( (LA15_0==DOC_COMMENT) ) { + alt15=1; + } + switch (alt15) { + case 1 : + // jUnitGen.g:40:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase298); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase301); + input(); + + state._fsp--; + + match(input,ML_STRING,FOLLOW_ML_STRING_in_testcase303); + + match(input, Token.UP, null); + + } + break; + case 6 : + // jUnitGen.g:41:4: ^( TEST_TREE ( DOC_COMMENT )? input TREE ) + { + match(input,TEST_TREE,FOLLOW_TEST_TREE_in_testcase310); + + match(input, Token.DOWN, null); + // jUnitGen.g:41:16: ( DOC_COMMENT )? + int alt16=2; + int LA16_0 = input.LA(1); + + if ( (LA16_0==DOC_COMMENT) ) { + alt16=1; + } + switch (alt16) { + case 1 : + // jUnitGen.g:41:16: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase312); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase315); + input4=input(); + + state._fsp--; + + TREE5=(CommonTree)match(input,TREE,FOLLOW_TREE_in_testcase317); + + match(input, Token.UP, null); + + + // TEMPLATE REWRITE + // 42:4: -> parserRuleTestAST(ruleName=$ruleNameinput=$input.stexpecting=Gen.normalizeTreeSpec($TREE.text)scriptLine=$input.start.getLine()) + { + retval.st = templateLib.getInstanceOf("parserRuleTestAST", + new STAttrMap().put("ruleName", ruleName).put("input", (input4!=null?input4.st:null)).put("expecting", Gen.normalizeTreeSpec((TREE5!=null?TREE5.getText():null))).put("scriptLine", (input4!=null?((CommonTree)input4.start):null).getLine())); + } + + + } + break; + case 7 : + // jUnitGen.g:46:4: ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) + { + match(input,TEST_ACTION,FOLLOW_TEST_ACTION_in_testcase387); + + match(input, Token.DOWN, null); + // jUnitGen.g:46:18: ( DOC_COMMENT )? + int alt17=2; + int LA17_0 = input.LA(1); + + if ( (LA17_0==DOC_COMMENT) ) { + alt17=1; + } + switch (alt17) { + case 1 : + // jUnitGen.g:46:18: DOC_COMMENT + { + match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_testcase389); + + } + break; + + } + + pushFollow(FOLLOW_input_in_testcase392); + input(); + + state._fsp--; + + match(input,ACTION,FOLLOW_ACTION_in_testcase394); + + match(input, Token.UP, null); + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return retval; + } + // $ANTLR end "testcase" + + public static class input_return extends TreeRuleReturnScope { + public StringTemplate st; + public Object getTemplate() { return st; } + public String toString() { return st==null?null:st.toString(); } + }; + + // $ANTLR start "input" + // jUnitGen.g:49:1: input : ( STRING -> string(s=Gen.escapeForJava($STRING.text)) | ML_STRING -> string(s=Gen.escapeForJava($ML_STRING.text)) | FILENAME ); + public final jUnitGen.input_return input() throws RecognitionException { + jUnitGen.input_return retval = new jUnitGen.input_return(); + retval.start = input.LT(1); + + CommonTree STRING6=null; + CommonTree ML_STRING7=null; + + try { + // jUnitGen.g:50:2: ( STRING -> string(s=Gen.escapeForJava($STRING.text)) | ML_STRING -> string(s=Gen.escapeForJava($ML_STRING.text)) | FILENAME ) + int alt19=3; + switch ( input.LA(1) ) { + case STRING: + { + alt19=1; + } + break; + case ML_STRING: + { + alt19=2; + } + break; + case FILENAME: + { + alt19=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 19, 0, input); + + throw nvae; + } + + switch (alt19) { + case 1 : + // jUnitGen.g:50:4: STRING + { + STRING6=(CommonTree)match(input,STRING,FOLLOW_STRING_in_input406); + + + // TEMPLATE REWRITE + // 50:12: -> string(s=Gen.escapeForJava($STRING.text)) + { + retval.st = templateLib.getInstanceOf("string", + new STAttrMap().put("s", Gen.escapeForJava((STRING6!=null?STRING6.getText():null)))); + } + + + } + break; + case 2 : + // jUnitGen.g:51:4: ML_STRING + { + ML_STRING7=(CommonTree)match(input,ML_STRING,FOLLOW_ML_STRING_in_input421); + + + // TEMPLATE REWRITE + // 51:14: -> string(s=Gen.escapeForJava($ML_STRING.text)) + { + retval.st = templateLib.getInstanceOf("string", + new STAttrMap().put("s", Gen.escapeForJava((ML_STRING7!=null?ML_STRING7.getText():null)))); + } + + + } + break; + case 3 : + // jUnitGen.g:52:4: FILENAME + { + match(input,FILENAME,FOLLOW_FILENAME_in_input435); + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return retval; + } + // $ANTLR end "input" + + // Delegated rules + + + protected DFA18 dfa18 = new DFA18(this); + static final String DFA18_eotS = + "\16\uffff"; + static final String DFA18_eofS = + "\16\uffff"; + static final String DFA18_minS = + "\1\5\3\uffff\1\2\2\uffff\1\13\4\16\2\uffff"; + static final String DFA18_maxS = + "\1\12\3\uffff\1\2\2\uffff\2\23\3\21\2\uffff"; + static final String DFA18_acceptS = + "\1\uffff\1\1\1\2\1\3\1\uffff\1\6\1\7\5\uffff\1\4\1\5"; + static final String DFA18_specialS = + "\16\uffff}>"; + static final String[] DFA18_transitionS = { + "\1\1\1\2\1\3\1\4\1\5\1\6", + "", + "", + "", + "\1\7", + "", + "", + "\1\10\2\uffff\1\11\2\uffff\1\12\1\uffff\1\13", + "\1\11\2\uffff\1\12\1\uffff\1\13", + "\1\14\2\uffff\1\15", + "\1\14\2\uffff\1\15", + "\1\14\2\uffff\1\15", + "", + "" + }; + + static final short[] DFA18_eot = DFA.unpackEncodedString(DFA18_eotS); + static final short[] DFA18_eof = DFA.unpackEncodedString(DFA18_eofS); + static final char[] DFA18_min = DFA.unpackEncodedStringToUnsignedChars(DFA18_minS); + static final char[] DFA18_max = DFA.unpackEncodedStringToUnsignedChars(DFA18_maxS); + static final short[] DFA18_accept = DFA.unpackEncodedString(DFA18_acceptS); + static final short[] DFA18_special = DFA.unpackEncodedString(DFA18_specialS); + static final short[][] DFA18_transition; + + static { + int numStates = DFA18_transitionS.length; + DFA18_transition = new short[numStates][]; + for (int i=0; i parserRuleTestAST(ruleName=$ruleNameinput=$input.stexpecting=Gen.normalizeTreeSpec($TREE.text)scriptLine=$input.start.getLine()) | ^( TEST_ACTION ( DOC_COMMENT )? input ACTION ) );"; + } + } + + + public static final BitSet FOLLOW_28_in_gUnitDef45 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ID_in_gUnitDef47 = new BitSet(new long[]{0x0000000100002810L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_gUnitDef49 = new BitSet(new long[]{0x0000000100002810L}); + public static final BitSet FOLLOW_optionsSpec_in_gUnitDef53 = new BitSet(new long[]{0x0000000100002810L}); + public static final BitSet FOLLOW_header_in_gUnitDef55 = new BitSet(new long[]{0x0000000100002810L}); + public static final BitSet FOLLOW_testsuite_in_gUnitDef61 = new BitSet(new long[]{0x0000000100002818L}); + public static final BitSet FOLLOW_OPTIONS_in_optionsSpec96 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_option_in_optionsSpec98 = new BitSet(new long[]{0x0000000080000008L}); + public static final BitSet FOLLOW_31_in_option117 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ID_in_option119 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_ID_in_option121 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_31_in_option133 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ID_in_option135 = new BitSet(new long[]{0x0000000000004000L}); + public static final BitSet FOLLOW_STRING_in_option137 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_32_in_header154 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ACTION_in_header156 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_SUITE_in_testsuite176 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ID_in_testsuite180 = new BitSet(new long[]{0x0000000000001000L}); + public static final BitSet FOLLOW_ID_in_testsuite182 = new BitSet(new long[]{0x0000000000000FE0L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testsuite184 = new BitSet(new long[]{0x0000000000000FE0L}); + public static final BitSet FOLLOW_testcase_in_testsuite189 = new BitSet(new long[]{0x0000000000000FE8L}); + public static final BitSet FOLLOW_SUITE_in_testsuite198 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_ID_in_testsuite202 = new BitSet(new long[]{0x0000000000000FE0L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testsuite207 = new BitSet(new long[]{0x0000000000000FE0L}); + public static final BitSet FOLLOW_testcase_in_testsuite212 = new BitSet(new long[]{0x0000000000000FE8L}); + public static final BitSet FOLLOW_TEST_OK_in_testcase244 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase246 = new BitSet(new long[]{0x00000000000A4000L}); + public static final BitSet FOLLOW_input_in_testcase249 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_TEST_FAIL_in_testcase256 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase258 = new BitSet(new long[]{0x00000000000A4000L}); + public static final BitSet FOLLOW_input_in_testcase261 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_TEST_RETVAL_in_testcase268 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase270 = new BitSet(new long[]{0x00000000000A4000L}); + public static final BitSet FOLLOW_input_in_testcase273 = new BitSet(new long[]{0x0000000000010000L}); + public static final BitSet FOLLOW_RETVAL_in_testcase275 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_TEST_STDOUT_in_testcase282 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase284 = new BitSet(new long[]{0x00000000000A4000L}); + public static final BitSet FOLLOW_input_in_testcase287 = new BitSet(new long[]{0x0000000000004000L}); + public static final BitSet FOLLOW_STRING_in_testcase289 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_TEST_STDOUT_in_testcase296 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase298 = new BitSet(new long[]{0x00000000000A4000L}); + public static final BitSet FOLLOW_input_in_testcase301 = new BitSet(new long[]{0x0000000000020000L}); + public static final BitSet FOLLOW_ML_STRING_in_testcase303 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_TEST_TREE_in_testcase310 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase312 = new BitSet(new long[]{0x00000000000A4000L}); + public static final BitSet FOLLOW_input_in_testcase315 = new BitSet(new long[]{0x0000000000040000L}); + public static final BitSet FOLLOW_TREE_in_testcase317 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_TEST_ACTION_in_testcase387 = new BitSet(new long[]{0x0000000000000004L}); + public static final BitSet FOLLOW_DOC_COMMENT_in_testcase389 = new BitSet(new long[]{0x00000000000A4000L}); + public static final BitSet FOLLOW_input_in_testcase392 = new BitSet(new long[]{0x0000000000008000L}); + public static final BitSet FOLLOW_ACTION_in_testcase394 = new BitSet(new long[]{0x0000000000000008L}); + public static final BitSet FOLLOW_STRING_in_input406 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ML_STRING_in_input421 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_FILENAME_in_input435 = new BitSet(new long[]{0x0000000000000002L}); + +} \ No newline at end of file