+++ /dev/null
-/* UtilParser.java */
-/* Generated By:JavaCC: Do not edit this line. UtilParser.java */
-package edu.uci.eecs.utilParser;
-import edu.uci.eecs.specExtraction.FunctionHeader;
-import edu.uci.eecs.specExtraction.QualifiedName;
-import edu.uci.eecs.specExtraction.VariableDeclaration;
-//import edu.uci.eecs.specExtraction.WrongAnnotationException;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.util.ArrayList;
-
-
-public class UtilParser implements UtilParserConstants {
- public static void main(String[] argvs)
- throws ParseException, TokenMgrError {
- try {
- File f = new File("./grammer/spec1.txt");
- FileInputStream fis = new FileInputStream(f);
- UtilParser parser = new UtilParser(fis);
-
- //parser.Test();
- System.out.println("Parsing finished!");
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
-
- public static ArrayList<VariableDeclaration> getTemplateArg(String line)
- throws ParseException {
- InputStream input = new ByteArrayInputStream(line.getBytes());
- UtilParser parser = new UtilParser(input);
- return parser.TemplateParamList();
- }
-
- public static FunctionHeader parseFuncHeader(String line)
- throws ParseException {
- InputStream input = new ByteArrayInputStream(line.getBytes());
- UtilParser parser = new UtilParser(input);
- return parser.FuncDecl();
- }
-
- public static VariableDeclaration parseDeclaration(String line)
- throws ParseException {
- InputStream input = new ByteArrayInputStream(line.getBytes());
- UtilParser parser = new UtilParser(input);
- return parser.Declaration();
- }
-
- public static String stringArray2String(ArrayList<String> content) {
- StringBuilder sb = new StringBuilder();
- if (content.size() == 1)
- return content.get(0);
- for (int i = 0; i < content.size(); i++) {
- sb.append(content.get(i) + "\u005cn");
- }
- return sb.toString();
- }
-
- final public String Type() throws ParseException {String type;
- String str;
- QualifiedName name;
-type = "";
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case CONST:{
- jj_consume_token(CONST);
-type = "const";
- break;
- }
- default:
- jj_la1[0] = jj_gen;
- ;
- }
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case STRUCT:
- case CLASS:
- case UNSIGNED:{
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case STRUCT:{
- str = jj_consume_token(STRUCT).image;
- break;
- }
- case CLASS:{
- str = jj_consume_token(CLASS).image;
- break;
- }
- case UNSIGNED:{
- str = jj_consume_token(UNSIGNED).image;
- break;
- }
- default:
- jj_la1[1] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
-type = type.equals("") ? type + str : type + " " + str;
- break;
- }
- default:
- jj_la1[2] = jj_gen;
- ;
- }
- name = ParseQualifiedName();
-if (!type.equals(""))
- type = type + " " + name.fullName;
- else
- type = name.fullName;
- label_1:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case CONST:
- case STAR:
- case AND:{
- ;
- break;
- }
- default:
- jj_la1[3] = jj_gen;
- break label_1;
- }
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case CONST:{
- str = jj_consume_token(CONST).image;
-if (!type.equals(""))
- type = type + " " + str;
- else
- type = str;
- break;
- }
- case STAR:{
- str = jj_consume_token(STAR).image;
-if (!type.equals(""))
- type = type + " " + str;
- else
- type = str;
- break;
- }
- case AND:{
- str = jj_consume_token(AND).image;
-if (!type.equals(""))
- type = type + " " + str;
- else
- type = str;
- break;
- }
- default:
- jj_la1[4] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
-{if ("" != null) return type;}
- throw new Error("Missing return statement in function");
- }
-
- final public void Test() throws ParseException {String str;
- FunctionHeader func;
- /*
- str = Type()
- {
- System.out.println(str);
- }
- */
- func = FuncDecl();
-System.out.println(func);
- }
-
- final public String ParameterizedName() throws ParseException {String res = "";
- String str;
- str = jj_consume_token(IDENTIFIER).image;
-res = str;
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case LESS_THAN:{
- jj_consume_token(LESS_THAN);
- str = Type();
-res = res + "<" + str;
- label_2:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case COMMA:{
- ;
- break;
- }
- default:
- jj_la1[5] = jj_gen;
- break label_2;
- }
- jj_consume_token(COMMA);
- str = Type();
-res = res + ", " + str;
- }
- jj_consume_token(GREATER_THAN);
-res = res + ">";
- break;
- }
- default:
- jj_la1[6] = jj_gen;
- ;
- }
-{if ("" != null) return res;}
- throw new Error("Missing return statement in function");
- }
-
- final public FunctionHeader FuncDecl() throws ParseException {String ret;
- QualifiedName funcName;
- ArrayList<VariableDeclaration> args;
- label_3:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case INLINE:
- case STATIC:{
- ;
- break;
- }
- default:
- jj_la1[7] = jj_gen;
- break label_3;
- }
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case STATIC:{
- jj_consume_token(STATIC);
- break;
- }
- case INLINE:{
- jj_consume_token(INLINE);
- break;
- }
- default:
- jj_la1[8] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- ret = Type();
- funcName = ParseQualifiedName();
- args = FormalParamList();
-FunctionHeader res = new FunctionHeader(ret, funcName, args);
- //System.out.println(res);
- {if ("" != null) return res;}
- throw new Error("Missing return statement in function");
- }
-
- final public QualifiedName ParseQualifiedName() throws ParseException {String qualifiedName, str;
-qualifiedName = "";
- str = ParameterizedName();
-qualifiedName = qualifiedName + str;
- label_4:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case DOUBLECOLON:{
- ;
- break;
- }
- default:
- jj_la1[9] = jj_gen;
- break label_4;
- }
- jj_consume_token(DOUBLECOLON);
- str = ParameterizedName();
-qualifiedName = qualifiedName +
- "::" + str;
- }
-QualifiedName res = new QualifiedName(qualifiedName);
- //System.out.println(res);
- {if ("" != null) return res;}
- throw new Error("Missing return statement in function");
- }
-
- final public ArrayList<VariableDeclaration> TemplateParamList() throws ParseException {ArrayList<VariableDeclaration> params;
- String type;
- String name;
-params = new ArrayList<VariableDeclaration>();
- jj_consume_token(TEMPLATE);
- jj_consume_token(LESS_THAN);
- type = jj_consume_token(IDENTIFIER).image;
- name = jj_consume_token(IDENTIFIER).image;
-params.add(new VariableDeclaration(type, name));
- label_5:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case COMMA:{
- ;
- break;
- }
- default:
- jj_la1[10] = jj_gen;
- break label_5;
- }
- jj_consume_token(COMMA);
- type = jj_consume_token(IDENTIFIER).image;
- name = jj_consume_token(IDENTIFIER).image;
-params.add(new VariableDeclaration(type, name));
- }
- jj_consume_token(GREATER_THAN);
-//System.out.println(params);
- {if ("" != null) return params;}
- throw new Error("Missing return statement in function");
- }
-
- final public ArrayList<VariableDeclaration > FormalParamList() throws ParseException {ArrayList<VariableDeclaration > typeParams;
- VariableDeclaration varDecl;
-typeParams = new ArrayList<VariableDeclaration >();
- jj_consume_token(OPEN_PAREN);
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case CONST:
- case STRUCT:
- case CLASS:
- case UNSIGNED:
- case IDENTIFIER:{
- varDecl = TypeParam();
-typeParams.add(varDecl);
- label_6:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case COMMA:{
- ;
- break;
- }
- default:
- jj_la1[11] = jj_gen;
- break label_6;
- }
- jj_consume_token(COMMA);
- varDecl = TypeParam();
-typeParams.add(varDecl);
- }
- break;
- }
- default:
- jj_la1[12] = jj_gen;
- ;
- }
- jj_consume_token(CLOSE_PAREN);
-{if ("" != null) return typeParams;}
- throw new Error("Missing return statement in function");
- }
-
- final public VariableDeclaration Declaration() throws ParseException {String type, param;
- type = Type();
- param = jj_consume_token(IDENTIFIER).image;
- jj_consume_token(SEMI_COLON);
-{if ("" != null) return new VariableDeclaration(type, param);}
- throw new Error("Missing return statement in function");
- }
-
- final public VariableDeclaration TypeParam() throws ParseException {String type, param;
- type = Type();
- param = jj_consume_token(IDENTIFIER).image;
-{if ("" != null) return new VariableDeclaration(type, param);}
- throw new Error("Missing return statement in function");
- }
-
- /** Generated Token Manager. */
- public UtilParserTokenManager token_source;
- JavaCharStream jj_input_stream;
- /** Current token. */
- public Token token;
- /** Next token. */
- public Token jj_nt;
- private int jj_ntk;
- private int jj_gen;
- final private int[] jj_la1 = new int[13];
- static private int[] jj_la1_0;
- static private int[] jj_la1_1;
- static private int[] jj_la1_2;
- static {
- jj_la1_init_0();
- jj_la1_init_1();
- jj_la1_init_2();
- }
- private static void jj_la1_init_0() {
- jj_la1_0 = new int[] {0x40,0x380,0x380,0x20000040,0x20000040,0x4000000,0x0,0x1800,0x1800,0x0,0x4000000,0x4000000,0x103c0,};
- }
- private static void jj_la1_init_1() {
- jj_la1_1 = new int[] {0x0,0x0,0x0,0x1,0x1,0x0,0x200,0x0,0x0,0x100000,0x0,0x0,0x0,};
- }
- private static void jj_la1_init_2() {
- jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
- }
-
- /** Constructor with InputStream. */
- public UtilParser(java.io.InputStream stream) {
- this(stream, null);
- }
- /** Constructor with InputStream and supplied encoding */
- public UtilParser(java.io.InputStream stream, String encoding) {
- try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
- token_source = new UtilParserTokenManager(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 13; i++) jj_la1[i] = -1;
- }
-
- /** Reinitialise. */
- public void ReInit(java.io.InputStream stream) {
- ReInit(stream, null);
- }
- /** Reinitialise. */
- public void ReInit(java.io.InputStream stream, String encoding) {
- try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
- token_source.ReInit(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 13; i++) jj_la1[i] = -1;
- }
-
- /** Constructor. */
- public UtilParser(java.io.Reader stream) {
- jj_input_stream = new JavaCharStream(stream, 1, 1);
- token_source = new UtilParserTokenManager(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 13; i++) jj_la1[i] = -1;
- }
-
- /** Reinitialise. */
- public void ReInit(java.io.Reader stream) {
- jj_input_stream.ReInit(stream, 1, 1);
- token_source.ReInit(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 13; i++) jj_la1[i] = -1;
- }
-
- /** Constructor with generated Token Manager. */
- public UtilParser(UtilParserTokenManager tm) {
- token_source = tm;
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 13; i++) jj_la1[i] = -1;
- }
-
- /** Reinitialise. */
- public void ReInit(UtilParserTokenManager tm) {
- token_source = tm;
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 13; i++) jj_la1[i] = -1;
- }
-
- private Token jj_consume_token(int kind) throws ParseException {
- Token oldToken;
- if ((oldToken = token).next != null) token = token.next;
- else token = token.next = token_source.getNextToken();
- jj_ntk = -1;
- if (token.kind == kind) {
- jj_gen++;
- return token;
- }
- token = oldToken;
- jj_kind = kind;
- throw generateParseException();
- }
-
-
-/** Get the next Token. */
- final public Token getNextToken() {
- if (token.next != null) token = token.next;
- else token = token.next = token_source.getNextToken();
- jj_ntk = -1;
- jj_gen++;
- return token;
- }
-
-/** Get the specific Token. */
- final public Token getToken(int index) {
- Token t = token;
- for (int i = 0; i < index; i++) {
- if (t.next != null) t = t.next;
- else t = t.next = token_source.getNextToken();
- }
- return t;
- }
-
- private int jj_ntk_f() {
- if ((jj_nt=token.next) == null)
- return (jj_ntk = (token.next=token_source.getNextToken()).kind);
- else
- return (jj_ntk = jj_nt.kind);
- }
-
- private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
- private int[] jj_expentry;
- private int jj_kind = -1;
-
- /** Generate ParseException. */
- public ParseException generateParseException() {
- jj_expentries.clear();
- boolean[] la1tokens = new boolean[80];
- if (jj_kind >= 0) {
- la1tokens[jj_kind] = true;
- jj_kind = -1;
- }
- for (int i = 0; i < 13; i++) {
- if (jj_la1[i] == jj_gen) {
- for (int j = 0; j < 32; j++) {
- if ((jj_la1_0[i] & (1<<j)) != 0) {
- la1tokens[j] = true;
- }
- if ((jj_la1_1[i] & (1<<j)) != 0) {
- la1tokens[32+j] = true;
- }
- if ((jj_la1_2[i] & (1<<j)) != 0) {
- la1tokens[64+j] = true;
- }
- }
- }
- }
- for (int i = 0; i < 80; i++) {
- if (la1tokens[i]) {
- jj_expentry = new int[1];
- jj_expentry[0] = i;
- jj_expentries.add(jj_expentry);
- }
- }
- int[][] exptokseq = new int[jj_expentries.size()][];
- for (int i = 0; i < jj_expentries.size(); i++) {
- exptokseq[i] = jj_expentries.get(i);
- }
- return new ParseException(token, exptokseq, tokenImage);
- }
-
- /** Enable tracing. */
- final public void enable_tracing() {
- }
-
- /** Disable tracing. */
- final public void disable_tracing() {
- }
-
-}