testnescobjecttreebuilder.java
来自「plugin for eclipse」· Java 代码 · 共 130 行
JAVA
130 行
package isis.anp.test;
import isis.anp.common.ParserConfiguration;
import isis.anp.common.ParserMessage;
import isis.anp.config.ParserConfigurationFactory;
import isis.anp.config.PlatformProfile;
import isis.anp.config.SensorBoardProfile;
import isis.anp.nesc.common.NesCObjectTreeBuilderContext;
import isis.anp.nesc.ot.NesCFile;
import isis.anp.nesc.ot.Outline;
import isis.commons.fs.SearchPath;
import java.io.File;
import java.util.Iterator;
import java.util.List;
public class TestNesCObjectTreeBuilder {
public static void main(String[] args) {
new TestNesCObjectTreeBuilder().test();
}
public void test() {
File tmpDir = null;
String tmpDirPath = "nescparser_tmp";
try {
// Create temp dir
tmpDir = new File(tmpDirPath);
tmpDir.mkdir();
String tosDir = "c:/tinyos-1.x/tos";
String appDir = tosDir + "/../apps/Blink";
String programName = "Blink.nc";
// Build the user include directories (app dir, lib dirs, etc)
SearchPath userSearchPathList = new SearchPath();
userSearchPathList.add(appDir);
userSearchPathList.add(tosDir + "/lib/Counters");
userSearchPathList.add(tosDir + "/lib/Deluge");
userSearchPathList.add(tosDir + "/lib/Deluge/TOSBoot/include");
// Load platform specific defaults.
PlatformProfile platformProfile = PlatformProfile.load("mica2");
SensorBoardProfile sensorBoardProfile = SensorBoardProfile
.load("none");
// Create parser configration.
ParserConfiguration parserConfig = ParserConfigurationFactory
.create(tosDir, tmpDirPath, platformProfile,
sensorBoardProfile, userSearchPathList, null);
NesCObjectTreeBuilderContext builderCtx = new NesCObjectTreeBuilderContext(parserConfig);
// Parse and build the object tree of the program.
ParserMessage container = new ParserMessage(ParserMessage.INFO, "OT: Component file: "+programName, null, null);
builderCtx.pushMessages(container);
try {
NesCFile nesCFile = builderCtx.getObjectTree(programName);
} catch(ParserMessage m) {
builderCtx.addMsg(m);
}
// Pring errors.
System.out
.println("Errors: ----------------------------------------------------------------");
System.out.println(builderCtx.getMessages().toString());
// Pring errors.
System.out
.println("Flat Errors: -----------------------------------------------------------");
List l = builderCtx.getMessages().getFlatMessageList(ParserMessage.ERROR.getLevel() | ParserMessage.WARNING.getLevel() | ParserMessage.INTERNAL_ERROR.getLevel());
Iterator i = l.iterator();
while (i.hasNext()) {
Exception e = (Exception) i.next();
if(e!=null) {
System.out.println(e.getMessage());
} else {
System.out.println("null");
}
}
// Print the object tree.
System.out
.println("Object tree: -----------------------------------------------------------");
Iterator it = builderCtx.getObjectTrees().iterator();
while (it.hasNext()) {
NesCFile ncf = (NesCFile) it.next();
Outline o = new Outline();
ncf.outline(o);
System.out.println(o.toString());
}
} catch (Exception e) {
System.err.println("exception: " + e);
e.printStackTrace();
} finally {
// call GC to make sure all files get closed
System.gc();
// delete the temp dir
deleteDir(tmpDir);
}
}
/**
* Recursively deletes a directory.
*
* @param dir
* @return success
*/
public static boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
// The directory is now empty so delete it
return dir.delete();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?