MFOmpParser.java

package edu.udel.cis.vsl.abc.front.fortran.parse;

import org.antlr.runtime.RecognitionException;
import org.antlr.runtime.TokenStream;
import org.antlr.runtime.tree.CommonTree;

import edu.udel.cis.vsl.abc.front.common.parse.OmpPragmaParser;
import edu.udel.cis.vsl.abc.front.fortran.ptree.MFTree;
import edu.udel.cis.vsl.abc.token.IF.Source;
import edu.udel.cis.vsl.abc.token.IF.SyntaxException;

public class MFOmpParser implements OmpPragmaParser {
	public static final int AMPERSAND = MFortranOmpParser.T_AMPERSAND;
	public static final int ATOMIC = MFortranOmpParser.T_OMPATOMIC;
	public static final int BARRIER = MFortranOmpParser.T_BARRIER;
	public static final int BITOR = MFortranOmpParser.T_BITOR;
	public static final int BITXOR = MFortranOmpParser.T_BITXOR;
	public static final int CAPTURE = MFortranOmpParser.T_CAPTURE;
	public static final int COLLAPSE = MFortranOmpParser.T_COLLAPSE;
	public static final int COPYIN = MFortranOmpParser.T_COPYIN;
	public static final int COPYPRIVATE = MFortranOmpParser.T_COPYPRIVATE;
	public static final int CRITICAL = MFortranOmpParser.T_CRITICAL;
	public static final int DATA_CLAUSE = MFortranOmpParser.T_DATA_CLAUSE;
	public static final int DEFAULT = MFortranOmpParser.T_DEFAULT;
	public static final int DYNAMIC = MFortranOmpParser.T_DYNAMIC;
	public static final int EQ = MFortranOmpParser.EQ;
	public static final int EQV = MFortranOmpParser.EQV;
	public static final int FLUSH = MFortranOmpParser.T_FLUSH;
	public static final int FOR = MFortranOmpParser.T_DO;
	public static final int FST_PRIVATE = MFortranOmpParser.T_FST_PRIVATE;
	public static final int GUIDED = MFortranOmpParser.T_GUIDED;
	public static final int IDENTIFIER = MFortranOmpParser.T_IDENT;
	public static final int IF = MFortranOmpParser.T_IF;
	public static final int LAND = MFortranOmpParser.T_AND;
	public static final int LOR = MFortranOmpParser.T_OR;
	public static final int LST_PRIVATE = MFortranOmpParser.T_LST_PRIVATE;
	public static final int MASTER = MFortranOmpParser.T_MASTER;
	public static final int NONE = MFortranOmpParser.T_NONE;
	public static final int NE = MFortranOmpParser.NE;
	public static final int NEQV = MFortranOmpParser.NEQV;
	public static final int NOWAIT = MFortranOmpParser.T_NOWAIT;
	public static final int NUM_THREADS = MFortranOmpParser.T_NUM_THREADS;
	public static final int ORDERED = MFortranOmpParser.T_ORDERED;
	public static final int PARALLEL = MFortranOmpParser.T_PARALLEL;
	public static final int PARALLEL_FOR = MFortranOmpParser.T_PARALLEL_FOR;
	public static final int PARALLEL_SECTIONS = MFortranOmpParser.T_PARALLEL_SECTIONS;
	public static final int PLUS = MFortranOmpParser.T_PLUS;
	public static final int PRIVATE = MFortranOmpParser.T_PRIVATE;
	public static final int READ = MFortranOmpParser.T_READ;
	public static final int REDUCTION = MFortranOmpParser.T_REDUCTION;
	public static final int RUNTIME = MFortranOmpParser.T_RUNTIME;
	public static final int SCHEDULE = MFortranOmpParser.T_SCHEDULE;
	public static final int SECTION = MFortranOmpParser.T_SECTION;
	public static final int SECTIONS = MFortranOmpParser.T_SECTIONS;
	public static final int SEQ_CST = MFortranOmpParser.T_SEQ_CST;
	public static final int SHARED = MFortranOmpParser.T_SHARED;
	public static final int SINGLE = MFortranOmpParser.T_SINGLE;
	public static final int STAR = MFortranOmpParser.T_ASTERISK;
	public static final int STATIC = MFortranOmpParser.T_STATIC;
	public static final int SUB = MFortranOmpParser.T_MINUS;
	public static final int THD_PRIVATE = MFortranOmpParser.T_THD_PRIVATE;
	public static final int UNIQUE_FOR = MFortranOmpParser.T_UNIQUE_FOR;
	public static final int UNIQUE_PARALLEL = MFortranOmpParser.T_UNIQUE_PARALLEL;
	public static final int UPDATE = MFortranOmpParser.T_UPDATE;
	public static final int WRITE = MFortranOmpParser.T_WRITE;
	public static final int END = MFortranOmpParser.T_END;

	@Override
	public CommonTree parse(Source source, TokenStream tokens)
			throws SyntaxException {
		MFortranOmpParser parser = new MFortranOmpParser(tokens);

		try {
			return (CommonTree) parser.openmp_construct().getTree();
		} catch (RecognitionException e) {
			throw new SyntaxException(e.getMessage(), null);
		}
	}

	// TODO: Transformation from CommonTree to MFTree for
	// parsing the involved expression.
	public MFTree parseFortran(Source source, TokenStream tokens)
			throws SyntaxException {
		MFortranOmpParser parser = new MFortranOmpParser(tokens);

		try {
			CommonTree tempTree = (CommonTree) parser.openmp_construct()
					.getTree();

			return commonTree2MFTree(tempTree);
		} catch (RecognitionException e) {
			throw new SyntaxException(e.getMessage(), null);
		}
	}

	private MFTree commonTree2MFTree(CommonTree tree) {
		// TODO Auto-generated method stub
		return null;
	}

}