// $ANTLR 3.1.3 Mar 18, 2009 10:09:25 OpenCL.g 2010-10-24 13:57:48
package org.trifort.rootbeer.compressor;
import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import org.antlr.runtime.tree.*;
public class OpenCLParser extends Parser {
public static final String[] tokenNames = new String[] {
"<invalid>", "<EOR>", "<DOWN>", "<UP>", "SPECIAL", "SEP", "END_OF_STATEMENT", "AMP", "POINT", "INT_LITERAL", "WHITESPACE", "STRING_DELIM", "VARIABLE"
};
public static final int INT_LITERAL=9;
public static final int VARIABLE=12;
public static final int SPECIAL=4;
public static final int SEP=5;
public static final int POINT=8;
public static final int AMP=7;
public static final int STRING_DELIM=11;
public static final int WHITESPACE=10;
public static final int EOF=-1;
public static final int END_OF_STATEMENT=6;
// delegates
// delegators
public OpenCLParser(TokenStream input) {
this(input, new RecognizerSharedState());
}
public OpenCLParser(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 OpenCLParser.tokenNames; }
public String getGrammarFileName() { return "OpenCL.g"; }
public static class program_return extends ParserRuleReturnScope {
public List<String> ret;
public List<Boolean> modify;
public List<Boolean> string;
Object tree;
public Object getTree() { return tree; }
};
// $ANTLR start "program"
// OpenCL.g:23:1: program returns [List<String> ret, List<Boolean> modify, List<Boolean> string] : ( (e1= ( SPECIAL | SEP | END_OF_STATEMENT | AMP | POINT | INT_LITERAL | WHITESPACE ) ) | e3= STRING_DELIM | e2= VARIABLE )* EOF ;
public final OpenCLParser.program_return program() throws RecognitionException {
OpenCLParser.program_return retval = new OpenCLParser.program_return();
retval.start = input.LT(1);
Object root_0 = null;
Token e1=null;
Token e3=null;
Token e2=null;
Token EOF1=null;
Object e1_tree=null;
Object e3_tree=null;
Object e2_tree=null;
Object EOF1_tree=null;
retval.ret = new ArrayList<String>();
retval.modify = new ArrayList<Boolean>();
retval.string = new ArrayList<Boolean>();
try {
// OpenCL.g:29:3: ( ( (e1= ( SPECIAL | SEP | END_OF_STATEMENT | AMP | POINT | INT_LITERAL | WHITESPACE ) ) | e3= STRING_DELIM | e2= VARIABLE )* EOF )
// OpenCL.g:29:5: ( (e1= ( SPECIAL | SEP | END_OF_STATEMENT | AMP | POINT | INT_LITERAL | WHITESPACE ) ) | e3= STRING_DELIM | e2= VARIABLE )* EOF
{
root_0 = (Object)adaptor.nil();
// OpenCL.g:29:5: ( (e1= ( SPECIAL | SEP | END_OF_STATEMENT | AMP | POINT | INT_LITERAL | WHITESPACE ) ) | e3= STRING_DELIM | e2= VARIABLE )*
loop1:
do {
int alt1=4;
switch ( input.LA(1) ) {
case SPECIAL:
case SEP:
case END_OF_STATEMENT:
case AMP:
case POINT:
case INT_LITERAL:
case WHITESPACE:
{
alt1=1;
}
break;
case STRING_DELIM:
{
alt1=2;
}
break;
case VARIABLE:
{
alt1=3;
}
break;
}
switch (alt1) {
case 1 :
// OpenCL.g:29:7: (e1= ( SPECIAL | SEP | END_OF_STATEMENT | AMP | POINT | INT_LITERAL | WHITESPACE ) )
{
// OpenCL.g:29:7: (e1= ( SPECIAL | SEP | END_OF_STATEMENT | AMP | POINT | INT_LITERAL | WHITESPACE ) )
// OpenCL.g:29:8: e1= ( SPECIAL | SEP | END_OF_STATEMENT | AMP | POINT | INT_LITERAL | WHITESPACE )
{
e1=(Token)input.LT(1);
if ( (input.LA(1)>=SPECIAL && input.LA(1)<=WHITESPACE) ) {
input.consume();
adaptor.addChild(root_0, (Object)adaptor.create(e1));
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
retval.ret.add((e1!=null?e1.getText():null)); retval.modify.add(false); retval.string.add(false);
}
}
break;
case 2 :
// OpenCL.g:30:7: e3= STRING_DELIM
{
e3=(Token)match(input,STRING_DELIM,FOLLOW_STRING_DELIM_in_program114);
e3_tree = (Object)adaptor.create(e3);
adaptor.addChild(root_0, e3_tree);
retval.ret.add((e3!=null?e3.getText():null)); retval.modify.add(false); retval.string.add(true);
}
break;
case 3 :
// OpenCL.g:31:7: e2= VARIABLE
{
e2=(Token)match(input,VARIABLE,FOLLOW_VARIABLE_in_program126);
e2_tree = (Object)adaptor.create(e2);
adaptor.addChild(root_0, e2_tree);
retval.ret.add((e2!=null?e2.getText():null)); retval.modify.add(true); retval.string.add(false);
}
break;
default :
break loop1;
}
} while (true);
EOF1=(Token)match(input,EOF,FOLLOW_EOF_in_program133);
EOF1_tree = (Object)adaptor.create(EOF1);
adaptor.addChild(root_0, EOF1_tree);
}
retval.stop = input.LT(-1);
retval.tree = (Object)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
catch (RecognitionException e) {
throw e;
}
finally {
}
return retval;
}
// $ANTLR end "program"
// Delegated rules
public static final BitSet FOLLOW_set_in_program73 = new BitSet(new long[]{0x0000000000001FF0L});
public static final BitSet FOLLOW_STRING_DELIM_in_program114 = new BitSet(new long[]{0x0000000000001FF0L});
public static final BitSet FOLLOW_VARIABLE_in_program126 = new BitSet(new long[]{0x0000000000001FF0L});
public static final BitSet FOLLOW_EOF_in_program133 = new BitSet(new long[]{0x0000000000000002L});
}