testnescparser.java

来自「plugin for eclipse」· Java 代码 · 共 95 行

JAVA
95
字号
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.NesCParserContext;
import isis.commons.fs.Dir;
import isis.commons.fs.SearchPath;

import java.io.File;

public class TestNesCParser {

	public static void main(String[] args) {
		new TestNesCParser().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);

			NesCParserContext ctx = new NesCParserContext(parserConfig);


			// Parse
			System.out.println("Parsing: ---------------------------------------------------------------");			

			ParserMessage container = new ParserMessage(ParserMessage.INFO, "Component file: "+programName, null, null);
			ctx.pushMessages(container);
			try {
				ctx.getAST(programName);
			} catch(ParserMessage m) {
				ctx.addMsg(m);
			}

			// Pring errors.
			System.out
					.println("Errors: ----------------------------------------------------------------");
			System.out.println(ctx.getMessages().toString());
			
//			// Show ASTs
//			Iterator i = ctx.getProcessedASTs().iterator();
//			while(i.hasNext()) {
//				TNode ast = (TNode)i.next();
//				ASTFrameFactory.create(ast, ast.getFileName());
//			}
//			
//
//			// Print symbol table
//			System.out.println("Symbol table: ----------------------------------------------------------");			
//			System.out.println(ctx.getSymbolTable().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
			Dir.rmDir(tmpDir,true);
		}
	}
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?