📄 main.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 + -