X-Git-Url: http://plrg.eecs.uci.edu/git/?p=cdsspec-compiler.git;a=blobdiff_plain;f=grammer%2Fspec-compiler.jj;h=2238268a43ac644a62e490703ea226c6d3060f2f;hp=85aabff176d0ab19da6572b2fac30649eb15f218;hb=570d67c87af73f80a04e584ffacf2c395c570450;hpb=809787d83de53a464887c48b0a083d4903e0734e diff --git a/grammer/spec-compiler.jj b/grammer/spec-compiler.jj index 85aabff..2238268 100644 --- a/grammer/spec-compiler.jj +++ b/grammer/spec-compiler.jj @@ -71,6 +71,8 @@ package edu.uci.eecs.specCompiler.grammerParser; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -97,6 +99,15 @@ import edu.uci.eecs.specCompiler.specExtraction.ActionSubConstruct.DefineVar; e.printStackTrace(); } } + + public static Construct parseSpec(String text) + throws ParseException, TokenMgrError { + InputStream input = new ByteArrayInputStream(text.getBytes()); + SpecParser parser = new SpecParser(input); + return parser.Parse(); + } + + } PARSER_END(SpecParser) @@ -198,6 +209,8 @@ TOKEN : | +| + | | @@ -313,7 +326,7 @@ Construct Parse() : ) { - System.out.println(res); + //System.out.println(res); return res; } } @@ -354,7 +367,7 @@ String C_CPP_CODE() : ( t = | t = | t = | t = | t = | t = | t = | t = | - t = | t = | t = | t = | t = | t = | t = | + t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | @@ -512,8 +525,11 @@ ActionSubConstruct Action() : { { defineVars = new ArrayList(); + code = ""; } + ( + ( ( (defineVarStr = C_CPP_CODE()) { int eqIdx = defineVarStr.indexOf('='); @@ -523,13 +539,13 @@ ActionSubConstruct Action() : expr = defineVarStr.substring(eqIdx + 2); DefineVar defineVar = new DefineVar(type, name, expr); defineVars.add(defineVar); - } - )* - (code = C_CPP_CODE()) - { - ActionSubConstruct res = new ActionSubConstruct(defineVars, code); - return res; - } + })* ( (code = C_CPP_CODE()))? ) + ) + + { + ActionSubConstruct res = new ActionSubConstruct(defineVars, code); + return res; + } } PotentialCPDefineConstruct Potential_commit_point_define() :