⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 SkipOOMiniJOOL教学语言的编译器前端
💻 JAVA
字号:
package edu.ustc.cs.minijool.parser;

import java.io.FileReader;
import java.io.IOException;
import java.util.*;

import edu.ustc.cs.minijool.lexer.*;
import edu.ustc.cs.minijool.interp.*;

import org.eclipse.jdt.core.dom.*;

public class Main {

	private static boolean viewAST = true;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//runPart1();
		runPart2();
	}

	public static void runPart1() {
		Lexer l = new ExpressionLexer("test/exp_list.txt");
		ExpressionParser parser = new ExpressionParser(l);
		ASTNode root = parser.parse();
		if (viewAST) {
			ASTViewer viewer = new ASTViewer();
			viewer.viewAST(root);
		}
		try{
			root.accept(new Interpreter());
		}catch(DivideByZeroException e) {
			System.out.println("Error: division by zero");
		} catch (VoidReferenceException e) {
			System.out.println("Error: use of void value");
		}
	}
	
	public static void runPart2() {
		boolean viewAST = true;
		
		ASTNode block;
		block = ExprParser.parse("test/exp_list.txt");
		if (viewAST) {
			ASTViewer viewer = new ASTViewer();
			viewer.viewAST(block);
		}
	}
	public static void runPart4() {
		PushbackReader reader = null;
		
		try {
			reader = new PushbackReader(new FileReader("test/example.mj"));
		} catch(IOException e) {
			System.out.println(e);
			System.exit(-1);
		}
		
		NFASimulator lexer = new NFASimulator(reader, (new LexerCode()).getNFA());
		Interpreter interp = new Interpreter();
		Parser p = new Parser(lexer);
		if (p.parse()) {
			System.out.println("parse successful");
			List l = (List)p.peek(0);
			((ASTNode)l.get(0)).accept(interp);
//			ASTViewer viewer = new ASTViewer();
	//		viewer.viewAST((ASTNode)l.get(0));
		} else {
			parseError(p);
		}
	}
	
	private static void parseError(RDParser p) {
		int maxErrorNext = p.getMaxErrorNext();
		System.out.println("parse failed: " + p.tokenAt(maxErrorNext));
		System.out.println("expecting tokens " + p.getMissedToks());
		System.out.println("processed " + maxErrorNext + " tokens");		
	} 
}

⌨️ 快捷键说明

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