// $ANTLR : "program.g" -> "programParser.java"$
import edu.neu.ccs.demeter.*;
import antlr.TokenBuffer;
import antlr.TokenStreamException;
import antlr.TokenStreamIOException;
import antlr.ANTLRException;
import antlr.LLkParser;
import antlr.Token;
import antlr.TokenStream;
import antlr.RecognitionException;
import antlr.NoViableAltException;
import antlr.MismatchedTokenException;
import antlr.SemanticException;
import antlr.ParserSharedInputState;
import antlr.collections.impl.BitSet;
public class programParser extends antlr.LLkParser implements programParserTokenTypes
{
static char unescapifyChar(String s) {
char c = s.charAt(0);
if (c == '\\') {
switch (s.charAt(1)) {
case 'n': c = '\n'; break;
case 't': c = '\t'; break;
case 'b': c = '\b'; break;
case 'r': c = '\r'; break;
case 'f': c = '\f'; break;
case '\\': c = '\\'; break;
case '\'': c = '\''; break;
case '\"': c = '\"'; break;
default:
c = (char) Integer.parseInt(s.substring(1, s.length()), 8);
break;
}
}
return c;
}
static String unescapify(String s) {
char str[] = new char[s.length()];
int i = 0, o = 0;
while (i < s.length()) {
char c = s.charAt(i++);
if (c == '\\') {
int j = i + 1;
while (j < s.length() &&
Character.digit(s.charAt(j), 8) != -1) {
j++;
}
c = unescapifyChar(s.substring(i-1, j));
i = j;
}
str[o++] = c;
}
return String.valueOf(str, 0, o);
}
protected programParser(TokenBuffer tokenBuf, int k) {
super(tokenBuf,k);
tokenNames = _tokenNames;
}
public programParser(TokenBuffer tokenBuf) {
this(tokenBuf,1);
}
protected programParser(TokenStream lexer, int k) {
super(lexer,k);
tokenNames = _tokenNames;
}
public programParser(TokenStream lexer) {
this(lexer,1);
}
public programParser(ParserSharedInputState state) {
super(state,1);
tokenNames = _tokenNames;
}
public final Molecule parseMolecule() throws RecognitionException, TokenStreamException {
Molecule it;
it = new Molecule();
MoleculeId the_moleculeId = null;
Atoms the_atoms = null;
Bonds the_bonds = null;
match(4);
the_moleculeId=parseMoleculeId();
it.moleculeId = the_moleculeId;
match(5);
the_atoms=parseAtoms();
it.atoms = the_atoms;
the_bonds=parseBonds();
it.bonds = the_bonds;
match(6);
return it;
}
public final MoleculeId parseMoleculeId() throws RecognitionException, TokenStreamException {
MoleculeId it;
it = new MoleculeId();
String the_string = null;
match(11);
the_string=parseString();
it.string = the_string;
return it;
}
public final Atoms parseAtoms() throws RecognitionException, TokenStreamException {
Atoms it;
it = new Atoms();
Atom_List the_atom_List = null;
match(7);
the_atom_List=parseAtom_List();
it.atom_List = the_atom_List;
match(8);
return it;
}
public final Bonds parseBonds() throws RecognitionException, TokenStreamException {
Bonds it;
it = new Bonds();
Bond_List the_bond_List = null;
match(14);
the_bond_List=parseBond_List();
it.bond_List = the_bond_List;
match(15);
return it;
}
public final Atom_List parseAtom_List() throws RecognitionException, TokenStreamException {
Atom_List it;
it = new Atom_List();
Atom the_repeatedPart = null;
{
_loop14:
do {
if ((LA(1)==9)) {
the_repeatedPart=parseAtom();
it.add(the_repeatedPart);
}
else {
break _loop14;
}
} while (true);
}
return it;
}
public final Atom parseAtom() throws RecognitionException, TokenStreamException {
Atom it;
it = new Atom();
AtomId the_atomId = null;
ElementType the_elementType = null;
HydrogenCount the_hydrogenCount = null;
match(9);
the_atomId=parseAtomId();
it.atomId = the_atomId;
the_elementType=parseElementType();
it.elementType = the_elementType;
the_hydrogenCount=parseHydrogenCount();
it.hydrogenCount = the_hydrogenCount;
match(5);
match(10);
return it;
}
public final AtomId parseAtomId() throws RecognitionException, TokenStreamException {
AtomId it;
it = new AtomId();
String the_string = null;
match(11);
the_string=parseString();
it.string = the_string;
return it;
}
public final ElementType parseElementType() throws RecognitionException, TokenStreamException {
ElementType it;
it = new ElementType();
String the_string = null;
match(12);
the_string=parseString();
it.string = the_string;
return it;
}
public final HydrogenCount parseHydrogenCount() throws RecognitionException, TokenStreamException {
HydrogenCount it;
it = new HydrogenCount();
String the_string = null;
match(13);
the_string=parseString();
it.string = the_string;
return it;
}
public final String parseString() throws RecognitionException, TokenStreamException {
String it;
Token t = null;
t = LT(1);
match(STRING_LITERAL);
String s = t.getText();
it = unescapify(s.substring(1, s.length()-1));
return it;
}
public final Bond_List parseBond_List() throws RecognitionException, TokenStreamException {
Bond_List it;
it = new Bond_List();
Bond the_repeatedPart = null;
{
_loop17:
do {
if ((LA(1)==16)) {
the_repeatedPart=parseBond();
it.add(the_repeatedPart);
}
else {
break _loop17;
}
} while (true);
}
return it;
}
public final Bond parseBond() throws RecognitionException, TokenStreamException {
Bond it;
it = new Bond();
BondId the_bondId = null;
AtomRefs2 the_atomRefs2 = null;
match(16);
the_bondId=parseBondId();
it.bondId = the_bondId;
the_atomRefs2=parseAtomRefs2();
it.atomRefs2 = the_atomRefs2;
match(17);
return it;
}
public final BondId parseBondId() throws RecognitionException, TokenStreamException {
BondId it;
it = new BondId();
String the_string = null;
match(11);
the_string=parseString();
it.string = the_string;
return it;
}
public final AtomRefs2 parseAtomRefs2() throws RecognitionException, TokenStreamException {
AtomRefs2 it;
it = new AtomRefs2();
String the_first = null;
String the_second = null;
match(18);
the_first=parseString();
it.first = the_first;
the_second=parseString();
it.second = the_second;
return it;
}
public final boolean parseboolean() throws RecognitionException, TokenStreamException {
boolean it;
switch ( LA(1)) {
case LITERAL_true:
{
match(LITERAL_true);
it = true;
break;
}
case LITERAL_false:
{
match(LITERAL_false);
it = false;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
return it;
}
public final char parsechar() throws RecognitionException, TokenStreamException {
char it;
Token t = null;
t = LT(1);
match(CHAR_LITERAL);
String s = t.getText();
it = unescapifyChar(s.substring(1, s.length()-1));
return it;
}
public final byte parsebyte() throws RecognitionException, TokenStreamException {
byte it;
int i;
i=parseint();
it = (byte) i;
return it;
}
public final int parseint() throws RecognitionException, TokenStreamException {
int it;
Token t = null;
t = LT(1);
match(NUM_INT);
it = Integer.parseInt(t.getText());
return it;
}
public final short parseshort() throws RecognitionException, TokenStreamException {
short it;
int i;
i=parseint();
it = (short) i;
return it;
}
public final long parselong() throws RecognitionException, TokenStreamException {
long it;
Token t = null;
t = LT(1);
match(NUM_LONG);
String s = t.getText();
it = Long.parseLong(s.substring(0,s.length()-1));
return it;
}
public final float parsefloat() throws RecognitionException, TokenStreamException {
float it;
Token t = null;
t = LT(1);
match(NUM_FLOAT);
String s = t.getText();
it = Float.parseFloat(s.substring(0,s.length()-1));
return it;
}
public final double parsedouble() throws RecognitionException, TokenStreamException {
double it;
Token t = null;
t = LT(1);
match(NUM_DOUBLE);
String s = t.getText();
if (s.endsWith("D") || s.endsWith("d"))
it = Double.parseDouble(s.substring(0,s.length()-1));
else
it = Double.parseDouble(s);
return it;
}
public final Boolean parseBoolean() throws RecognitionException, TokenStreamException {
Boolean it;
switch ( LA(1)) {
case LITERAL_true:
{
match(LITERAL_true);
it = Boolean.TRUE;
break;
}
case LITERAL_false:
{
match(LITERAL_false);
it = Boolean.FALSE;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
return it;
}
public final Character parseCharacter() throws RecognitionException, TokenStreamException {
Character it;
char c;
c=parsechar();
it = new Character(c);
return it;
}
public final Byte parseByte() throws RecognitionException, TokenStreamException {
Byte it;
byte b;
b=parsebyte();
it = new Byte(b);
return it;
}
public final Integer parseInteger() throws RecognitionException, TokenStreamException {
Integer it;
int i;
i=parseint();
it = new Integer(i);
return it;
}
public final Long parseLong() throws RecognitionException, TokenStreamException {
Long it;
long l;
l=parselong();
it = new Long(l);
return it;
}
public final Float parseFloat() throws RecognitionException, TokenStreamException {
Float it;
float f;
f=parsefloat();
it = new Float(f);
return it;
}
public final Double parseDouble() throws RecognitionException, TokenStreamException {
Double it;
double d;
d=parsedouble();
it = new Double(d);
return it;
}
public final Number parseNumber() throws RecognitionException, TokenStreamException {
Number it;
switch ( LA(1)) {
case NUM_INT:
{
it=parseInteger();
break;
}
case NUM_LONG:
{
it=parseLong();
break;
}
case NUM_FLOAT:
{
it=parseFloat();
break;
}
case NUM_DOUBLE:
{
it=parseDouble();
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
return it;
}
public final Ident parseIdent() throws RecognitionException, TokenStreamException {
Ident it;
Token t = null;
t = LT(1);
match(IDENT);
it = new Ident(t.getText());
return it;
}
public static final String[] _tokenNames = {
"<0>",
"EOF",
"<2>",
"NULL_TREE_LOOKAHEAD",
"\"\"",
"\"\"",
"\"\"",
"\"\"",
"\"\"",
"\"id=\"",
"\"elementType=\"",
"\"hydrogenCount=\"",
"\"\"",
"\"\"",
"\"\"",
"\"atomRefs2=\"",
"\"true\"",
"\"false\"",
"CHAR_LITERAL",
"NUM_INT",
"NUM_LONG",
"NUM_FLOAT",
"NUM_DOUBLE",
"STRING_LITERAL",
"IDENT",
"DOT",
"WS",
"SL_COMMENT",
"ML_COMMENT",
"ESC",
"HEX_DIGIT",
"VOCAB",
"EXPONENT",
"FLOAT_SUFFIX"
};
}