import edu.uci.eecs.specCompiler.specExtraction.InterfaceConstruct;
import edu.uci.eecs.specCompiler.specExtraction.PotentialCPDefineConstruct;
import edu.uci.eecs.specCompiler.specExtraction.SequentialDefineSubConstruct;
-import edu.uci.eecs.specCompiler.specExtraction.SpecConstruct;
import edu.uci.eecs.specCompiler.specExtraction.SpecExtractor;
-import edu.uci.eecs.specCompiler.specExtraction.SpecNotMatchException;
/**
* <p>
_extractor = new SpecExtractor();
- try {
- _extractor.extract(srcFiles);
- } catch (SpecNotMatchException e1) {
- e1.printStackTrace();
- }
+ _extractor.extract(srcFiles);
_semantics = new SemanticsChecker(_extractor.getConstructs());
try {
* "@Interface" define
* </p>
*/
- private void globalConstruct2Code(SpecConstruct inst) {
- GlobalConstruct construct = (GlobalConstruct) inst.construct;
+ private void globalConstruct2Code(GlobalConstruct construct) {
ArrayList<String> newCode = CodeVariables.generateGlobalVarDeclaration(
_semantics, construct);
// Record the global content array to generate the new file
}
// Mainly rename and wrap the interface
- private void interface2Code(SpecConstruct inst)
+ private void interface2Code(InterfaceConstruct construct)
throws InterfaceWrongFormatException {
- int lineNum = inst.endLineNum + 1;
- InterfaceConstruct construct = (InterfaceConstruct) inst.construct;
-
+ int lineNum = construct.begin + 1;
+
// Rename the interface name
File file = inst.file;
String funcDecl = inst.interfaceDeclBody;
}
// Generate new wrapper
- ArrayList<String> newCode = CodeVariables.generateInterfaceWrapper(_semantics, inst);
+ ArrayList<String> newCode = CodeVariables.generateInterfaceWrapper(
+ _semantics, inst);
// Add it to the codeAdditions
CodeAddition addition = new CodeAddition(lineNum, newCode);
if (!codeAdditions.containsKey(inst.file)) {
}
// Returns the function name that has been renamed and replace the old line
- private String renameInterface(SpecConstruct inst)
+ private String renameInterface(Construct inst)
throws InterfaceWrongFormatException {
String funcDecl = inst.interfaceDeclBody;
ArrayList<String> content = contents.get(inst.file);
}
IDExtractor idExtractor = new IDExtractor(funcDecl, beginIdx);
String funcName = idExtractor.getPrevID();
- int idBeginIdx = idExtractor.getIDBeginIdx(),
- idEndIdx = idExtractor.getIDEndIdx(),
- idLineBeginIdx = idExtractor.lineBeginIdxOfID(),
- idLineEndIdx = idExtractor.lineEndIdxOfID();
+ int idBeginIdx = idExtractor.getIDBeginIdx(), idEndIdx = idExtractor
+ .getIDEndIdx(), idLineBeginIdx = idExtractor.lineBeginIdxOfID(), idLineEndIdx = idExtractor
+ .lineEndIdxOfID();
String newLine = funcDecl.substring(idLineBeginIdx, idBeginIdx)
+ CodeVariables.SPEC_INTERFACE_WRAPPER + funcName
+ funcDecl.substring(idEndIdx + 1, idLineEndIdx + 1);
-
+
int lineNumOfID = idExtractor.lineNumOfID();
// Be careful: lineNum - 1 -> index of content array
content.set(inst.endLineNum + lineNumOfID, newLine);
return funcName;
}
- private void potentialCP2Code(SpecConstruct inst) {
- int lineNum = inst.endLineNum + 1;
- GlobalConstruct construct = (GlobalConstruct) inst.construct;
+ private void potentialCPDefine2Code(PotentialCPDefineConstruct construct) {
+ int lineNum = construct.beginLineNum;
ArrayList<String> newCode = new ArrayList<String>();
CodeAddition addition = new CodeAddition(lineNum, newCode);
- if (!codeAdditions.containsKey(inst.file)) {
- codeAdditions.put(inst.file, new ArrayList<CodeAddition>());
+ if (!codeAdditions.containsKey(construct.file)) {
+ codeAdditions.put(construct.file, new ArrayList<CodeAddition>());
}
- codeAdditions.get(inst.file).add(addition);
+ codeAdditions.get(construct.file).add(addition);
}
- private void CPDefine2Code(SpecConstruct inst) {
- int lineNum = inst.endLineNum + 1;
- GlobalConstruct construct = (GlobalConstruct) inst.construct;
+ private void CPDefine2Code(CPDefineConstruct construct) {
+ int lineNum = construct.beginLineNum;
ArrayList<String> newCode = new ArrayList<String>();
CodeAddition addition = new CodeAddition(lineNum, newCode);
- if (!codeAdditions.containsKey(inst.file)) {
- codeAdditions.put(inst.file, new ArrayList<CodeAddition>());
+ if (!codeAdditions.containsKey(construct.file)) {
+ codeAdditions.put(construct.file, new ArrayList<CodeAddition>());
}
- codeAdditions.get(inst.file).add(addition);
+ codeAdditions.get(construct.file).add(addition);
}
- private void CPDefineCheck2Code(SpecConstruct inst) {
- int lineNum = inst.endLineNum + 1;
- GlobalConstruct construct = (GlobalConstruct) inst.construct;
+ private void CPDefineCheck2Code(CPDefineCheckConstruct construct) {
+ int lineNum = construct.beginLineNum;
ArrayList<String> newCode = new ArrayList<String>();
CodeAddition addition = new CodeAddition(lineNum, newCode);
- if (!codeAdditions.containsKey(inst.file)) {
- codeAdditions.put(inst.file, new ArrayList<CodeAddition>());
+ if (!codeAdditions.containsKey(construct.file)) {
+ codeAdditions.put(construct.file, new ArrayList<CodeAddition>());
}
- codeAdditions.get(inst.file).add(addition);
+ codeAdditions.get(construct.file).add(addition);
}
public void generateCode() {
for (int i = 0; i < _semantics.constructs.size(); i++) {
- SpecConstruct inst = _semantics.constructs.get(i);
- Construct construct = inst.construct;
+ Construct construct = _semantics.constructs.get(i);
if (construct instanceof GlobalConstruct) {
- globalConstruct2Code(inst);
+ globalConstruct2Code((GlobalConstruct) construct);
} else if (construct instanceof InterfaceConstruct) {
try {
- interface2Code(inst);
+ interface2Code((InterfaceConstruct) construct);
} catch (InterfaceWrongFormatException e) {
e.printStackTrace();
}