亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? scanner.java

?? 用java編譯的PL0編譯器 附帶解釋器
?? JAVA
字號:
import java.io.BufferedReader;
import java.io.IOException;

/**
 *  詞法分析器負責的工作是從源代碼里面讀取文法符號,這是PL/0編譯器的主要組成部分之一。
 */

public class Scanner {
	/**
	 * 剛剛讀入的字符
	 */
	private char ch = ' ';
	
	public int isArray =0;
	/**
	 * 當前讀入的行
	 */
	private char[] line;
	
	/**
	 * 當前行的長度(line length)
	 */
	public int ll = 0;
	
	/**
	 * 當前字符在當前行中的位置(character counter)
	 */
	public int cc = 0;
	
	/**
	 * 當前讀入的符號
	 */
	public Symbol sym;
	
	/**
	 * 保留字列表(注意保留字的存放順序)
	 */
	private String[] word;
	
	/**
	 * 保留字對應的符號值
	 */
	private Symbol[] wsym;
	
	/**
	 * 單字符的符號值
	 */
	private Symbol[] ssym;

	// 輸入流
	private BufferedReader in;

	/**
	 * 標識符名字(如果當前符號是標識符的話)
	 * @see Parser
	 * @see Table#enter
	 */
	public String id;

	/**
	 * 數值大小(如果當前符號是數字的話)
	 * @see Parser
	 * @see Table#enter
	 */
	public int num;
	
	/**
	 * 初始化詞法分析器
	 * @param input PL/0 源文件輸入流
	 */
	public Scanner(BufferedReader input) {
		in = input;
		
		// 設置單字符符號
		ssym = new Symbol[256];
		java.util.Arrays.fill(ssym, Symbol.nul);
		ssym['+'] = Symbol.plus;
		ssym['-'] = Symbol.minus;
		ssym['*'] = Symbol.times;
		ssym['/'] = Symbol.slash;
		ssym['('] = Symbol.lparen;
		ssym[')'] = Symbol.rparen;
		ssym['='] = Symbol.eql;
		ssym[','] = Symbol.comma;
		ssym['.'] = Symbol.period;
		ssym['#'] = Symbol.neq;
		ssym[';'] = Symbol.semicolon;
		
		// 設置保留字名字,按照字母順序,便于折半查找
		word = new String[] {"begin", "call", "const", "do", "else","end", "if",
			"odd", "procedure", "read", "then", "var", "while", "write"};
		
		// 設置保留字符號
		wsym = new Symbol[PL0.norw];
		wsym[0] = Symbol.beginsym;
		wsym[1] = Symbol.callsym;
		wsym[2] = Symbol.constsym;
		wsym[3] = Symbol.dosym;
		wsym[4] = Symbol.elsesym;
		wsym[5] = Symbol.endsym;
		wsym[6] = Symbol.ifsym;
		wsym[7] = Symbol.oddsym;
		wsym[8] = Symbol.procsym;
		wsym[9] = Symbol.readsym;
		wsym[10] = Symbol.thensym;
		wsym[11] = Symbol.varsym;
		wsym[12] = Symbol.whilesym;
		wsym[13] = Symbol.writesym;
	}
	
	/**
	 * 讀取一個字符,為減少磁盤I/O次數,每次讀取一行
	 */
	void getch() {
		String l = "";
		try {
			if (cc == ll) {
				while (l.equals(""))
					l = in.readLine().toLowerCase() + "\n";
				ll = l.length();
				cc = 0;
				line = l.toCharArray();
				System.out.println(PL0.interp.cx + " " + l);		//NN interp.cx
				PL0.fa1.println(PL0.interp.cx + " " + l);
			}
		} catch (IOException e) {
			throw new Error("program imcomplete");
		}
		ch = line[cc];
		cc ++;
	}
	
	/**
	 * 詞法分析,獲取一個詞法符號,是詞法分析器的重點
	 */
	public void getsym() {
		// Wirth 的 PL/0 編譯器使用一系列的if...else...來處理
		// 但是你的助教認為下面的寫法能夠更加清楚地看出這個函數的處理邏輯
		while (Character.isWhitespace(ch))		// 跳過所有空白字符
			getch();
		if (ch >= 'a' && ch <= 'z') {
			// 關鍵字或者一般標識符
			matchKeywordOrIdentifier();
		} else if (ch >= '0' && ch <= '9') {
			// 數字
			matchNumber();
		} else {
			// 操作符
			matchOperator();
		}
	}
	
	/**
	 * 分析關鍵字或者一般標識符
	 */
	void matchKeywordOrIdentifier() {
		int i;
		StringBuilder sb = new StringBuilder(PL0.al);		//NN StringBuilder
		// 首先把整個單詞讀出來
		do {
			sb.append(ch);
			getch();
		} while (ch >= 'a' && ch <= 'z' || ch >= '0' && ch <= '9');
		id = sb.toString();
		
		// 然后搜索是不是保留字(請注意使用的是什么搜索方法)
		i = java.util.Arrays.binarySearch(word, id);
		
		// 最后形成符號信息
		if (i < 0) {
			// 一般標識符
			sym = Symbol.ident;
			if (ch=='(')
				isArray=1;
		} else {
			// 關鍵字
			sym = wsym[i];
		}
	}
	
	/**
	 * 分析數字
	 */
	void matchNumber() {
		int k = 0;
		sym = Symbol.number;
		num = 0;
		do {
			num = 10*num + Character.digit(ch, 10);
			k++;
			getch();
		} while (ch>='0' && ch<='9'); 				// 獲取數字的值
		k--;
		if (k > PL0.nmax)
			Err.report(30);
	}
	
	/**
	 * 分析操作符
	 */
	void matchOperator() {
		// 請注意這里的寫法跟Wirth的有點不同
		switch (ch) {
		case ':':		// 賦值符號
			getch();
			if (ch == '=') {
				sym = Symbol.becomes;
				getch();
			} else {
				// 不能識別的符號
				sym = Symbol.nul;
			}
			break;
		case '<':		// 小于或者小于等于
			getch();
			if (ch == '=') {
				sym = Symbol.leq;
				getch();
			} else {
				sym = Symbol.lss;
			}
			break;
		case '>':		// 大于或者大于等于
			getch();
			if (ch == '=') {
				sym = Symbol.geq;
				getch();
			} else {
				sym = Symbol.gtr;
			}
			break;
		default:		// 其他為單字符操作符(如果符號非法則返回nil)
			sym = ssym[ch];
			if (sym != Symbol.period)
				getch();
			break;
		}
	}	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av不卡免费电影| 国产精品五月天| 久久精品综合网| 亚洲综合色区另类av| 久久国产综合精品| 欧美天天综合网| 欧美国产丝袜视频| 久久99精品久久久久久国产越南| 97se亚洲国产综合在线| 日韩亚洲欧美高清| 亚洲曰韩产成在线| 成人av资源站| 久久久亚洲国产美女国产盗摄| 日韩精品一级中文字幕精品视频免费观看 | 99久久精品免费看| www国产成人免费观看视频 深夜成人网 | 欧美不卡一区二区三区四区| 亚洲伊人色欲综合网| 不卡在线视频中文字幕| 国产亚洲欧美一区在线观看| 日本v片在线高清不卡在线观看| 日本韩国一区二区三区视频| 国产精品伦理在线| 国产91在线|亚洲| 精品精品欲导航| 免费观看一级欧美片| 欧美一区二区视频在线观看| 亚洲成av人片在线| 欧美日韩不卡视频| 亚洲国产日韩a在线播放性色| 91丨porny丨户外露出| 中文字幕日韩一区二区| 97se亚洲国产综合自在线观| 国产精品国产三级国产三级人妇| 国v精品久久久网| 欧美激情综合在线| 成人免费av资源| 国产精品第四页| 欧美在线高清视频| 午夜欧美大尺度福利影院在线看| 欧美日韩日日摸| 日韩成人伦理电影在线观看| 欧美一区二区私人影院日本| 久久精品国产亚洲高清剧情介绍| 91精品国产综合久久香蕉的特点| 日本欧美加勒比视频| 2023国产精华国产精品| 国产凹凸在线观看一区二区| 中文字幕亚洲欧美在线不卡| 91丝袜国产在线播放| 亚洲自拍偷拍麻豆| 91精品欧美综合在线观看最新| 免费成人av资源网| 久久久国产精品麻豆| 99麻豆久久久国产精品免费优播| 亚洲美女免费在线| 欧美日本高清视频在线观看| 国产麻豆一精品一av一免费| 五月激情六月综合| 日韩视频在线永久播放| 风间由美性色一区二区三区| 一区二区三区欧美在线观看| 337p亚洲精品色噜噜| 国产精品2024| 亚洲综合久久av| 精品乱人伦一区二区三区| 成人涩涩免费视频| 天堂一区二区在线| 欧美激情一区三区| 欧美三级日韩三级| 国产成人精品免费视频网站| 亚洲在线观看免费视频| 久久理论电影网| 日本韩国视频一区二区| 精一区二区三区| 日韩毛片视频在线看| 欧美成人精品二区三区99精品| 成人国产精品免费观看视频| 午夜视频在线观看一区二区三区| 国产精品五月天| 日韩精品一区二区三区蜜臀| 91福利区一区二区三区| 国产一级精品在线| 午夜欧美大尺度福利影院在线看| 国产精品国产三级国产aⅴ原创| 制服丝袜日韩国产| 91在线视频官网| 国产精品一级黄| 美女在线一区二区| 亚洲在线观看免费| 成人免费小视频| 久久久久9999亚洲精品| 日韩一级欧美一级| 欧美美女直播网站| 91精品办公室少妇高潮对白| 国产精品乡下勾搭老头1| 免费看欧美美女黄的网站| 亚洲国产裸拍裸体视频在线观看乱了| 国产日韩欧美一区二区三区乱码| 国产精品久久福利| 久久精品一区四区| 欧美va日韩va| 精品久久久三级丝袜| 欧美一级黄色片| 欧美一区二区三区在线观看 | 丁香婷婷综合网| 国产主播一区二区三区| 免费在线一区观看| 午夜伊人狠狠久久| 亚洲电影你懂得| 天天综合网 天天综合色| 亚洲国产日韩一区二区| 亚洲一区二区视频在线观看| 亚洲精品成人悠悠色影视| 亚洲色图20p| 亚洲乱码一区二区三区在线观看| 国产精品乱人伦| 亚洲视频资源在线| 亚洲一级不卡视频| 亚洲成人自拍偷拍| 婷婷开心激情综合| 免费看日韩精品| 国产精品亚洲午夜一区二区三区| 国产盗摄视频一区二区三区| 国产精品88av| 不卡一二三区首页| 色欧美日韩亚洲| 欧美日韩国产高清一区| 7777精品伊人久久久大香线蕉| 91精品国产91久久久久久一区二区| 欧美日韩国产高清一区| 日韩美女主播在线视频一区二区三区| 日韩三级在线观看| 国产偷国产偷精品高清尤物| 中文字幕在线不卡一区| 亚洲一区二区四区蜜桃| 奇米影视一区二区三区| 国产麻豆91精品| 91亚洲精品乱码久久久久久蜜桃| 久久影院视频免费| 亚洲视频 欧洲视频| 亚洲午夜精品久久久久久久久| 免费av成人在线| 成人免费看视频| 欧美精品电影在线播放| www一区二区| 亚洲综合激情网| 国产麻豆视频一区| 色综合久久66| 精品欧美一区二区久久| 亚洲欧美国产高清| 青青草91视频| 99久久99久久精品免费观看| 欧美区视频在线观看| 国产视频一区在线播放| 亚洲一区二区三区中文字幕在线| 韩国av一区二区| 日本丰满少妇一区二区三区| 久久欧美中文字幕| 亚洲综合免费观看高清完整版| 国产中文字幕精品| 欧美色网一区二区| 国产女人18毛片水真多成人如厕| 亚洲在线中文字幕| 国产成人免费视频一区| 4438x亚洲最大成人网| 国产精品国产三级国产| 免费成人深夜小野草| 日本道在线观看一区二区| 久久精品视频一区二区| 免费观看一级特黄欧美大片| 色哟哟一区二区三区| 国产日本亚洲高清| 美女视频一区在线观看| 色噜噜狠狠色综合欧洲selulu| 精品国产一区二区三区久久影院| 亚洲国产精品久久不卡毛片| 成人国产免费视频| 国产人成亚洲第一网站在线播放| 成人免费毛片aaaaa**| 日韩欧美高清dvd碟片| 亚洲电影激情视频网站| 色又黄又爽网站www久久| 国产精品女人毛片| 国产精品中文有码| 久久综合资源网| 免费一区二区视频| 在线播放日韩导航| 夜夜揉揉日日人人青青一国产精品| 成人污视频在线观看| 久久久久久久久久看片| 精东粉嫩av免费一区二区三区| 3d成人动漫网站| 日产精品久久久久久久性色| 欧美乱妇15p| 亚洲aⅴ怡春院| 欧美狂野另类xxxxoooo| 亚洲第一福利一区| 欧美色中文字幕| 日韩av一级片|