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

📄 comp.java

📁 cocorj09-一个Java语言分析器
💻 JAVA
字号:
package Taste;

import java.awt.*;
import java.io.*;

class TasteErrors extends ErrorStream {

	void SemErr(int n, int line, int col) {
		String s;
		count++;
		switch (n) {
			case -1: {s = "invalid character"; break;}
			case 1: {s = "Identifier redeclared"; break;}
			case 2: {s = "Undeclared identifier"; break;}
			case 3: {s = "Block identifier mismatch"; break;}
			case 4: {s = "Integer type expected"; break;}
			case 5: {s = "Incompatible types"; break;}
			case 6: {s = "Boolean type expected"; break;}
			case 7: {s = "Variable expected"; break;}
			case 8: {s = "Invalid procedure call"; break;}
			case 9: {s = "Program too long"; break;}
			default: {s = "Semantic error " + n; break;}
		}
		StoreError(n, line, col, s);
	}

}

class Comp {

	static ErrorStream ErrorHandler;

// Portability - use the following for Java 1.0
//	private static DataInputStream getInput() { // Java 1.0
// Portability - use the following for Java 1.0
//	private static BufferedReader getInput() { // Java 1.1

	private static BufferedReader getInput() { // Java 1.1
		FileDialog d = new FileDialog(new Frame("Taste"), "Select data file");
		d.show();
		String data = d.getFile();
		if (data == null) return null;
		data = d.getDirectory() + data;
		try {

// Portability - use the following for Java 1.0
//			return new DataInputStream(new FileInputStream(data)); // Java 1.0
// Portability - use the following for Java 1.1
//			return new BufferedReader(new FileReader(data)); // Java 1.1

			return new BufferedReader(new FileReader(data)); // Java 1.1

		} catch (IOException e) {
		System.out.println("--- error accessing file " + data);
		return null;
		}
	}

	public static void main (String args[]) {
		String file, dir;

// Portability - use the following for Java 1.0
//		DataInputStream data; // Java 1.0
// Portability - use the following for Java 1.1
//		BufferedReader data; // Java 1.1

		BufferedReader data; // Java 1.1

		if (args.length == 0) {
			FileDialog d = new FileDialog(new Frame("Taste"), "Select source file");
			d.show();
			file = d.getFile(); dir = d.getDirectory();
		} else {
			file = args[0]; dir = "";
		}
		if (file != null) {
			// ErrorHandler = new MergeErrors(); // Merge error messages in listing
			// ErrorHandler = new ErrorStream(); // Very rudimentary
			ErrorHandler = new TasteErrors(); // Error messages reported to StdOut
			file = dir + file;
			Scanner.Init(file, ErrorHandler);
			Parser.Parse();
			if (Parser.Successful()) {
				if (args.length == 0) data = getInput();

// Portability - use the following for Java 1.0
//				else data = new DataInputStream(System.in); // Java 1.0
// Portability - use the following for Java 1.1
//				else data = new BufferedReader(new InputStreamReader(System.in)); // Java 1.1

				else data = new BufferedReader(new InputStreamReader(System.in)); // Java 1.1

				if (data != null) TC.Interpret(data);
			} else ErrorHandler.Summarize(dir);
		}
		System.exit(0);
	} 

}

⌨️ 快捷键说明

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