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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lexical.cs

?? 一個(gè)不錯(cuò)的用C語言編寫的語法詞法便編譯器哦
?? CS
字號(hào):
using System;
using System.IO;
using System.Collections;

namespace Lexical_Analyzer
{
	/// <summary>
	/// Lexical 的摘要說明。
	/// </summary>
	public class Lexical
	{

		
   		
		private int rnum;//行號(hào)
		private int rpos;//列號(hào)
        private static ArrayList symbolTable;
		private StreamReader br;
		private char c;
		private char bC;
		private int state;
		private String str;

		public Lexical(StreamReader br)
		{	
			symbolTable = new ArrayList();
			this.br=br;
			c=' ';
			bC=' ';
			state = 0;
			rnum=1;
			rpos=0;
			str="";
		}

		public ArrayList getSymbolTable()
		{
			c = nextChar();
			state = 0;
			analyzer();
			return symbolTable;
		}

		
		private void analyzer()
		{
			bool isRunning=true;

			while(isRunning)
			{
				switch (state)
				{
					case 0:
					
						if(c==' ')            //空格
						{
                    
						}
						else if(c=='\t')      //tab
						{
							rpos+=3;
						}
						else if((int)c==13)   //空格
						{
                    
						}
						else if((int)c==10)   //回車
						{
							rpos = 0;
							rnum++;
						}
						else if(c=='~')       //結(jié)束符
						{
							return;
						}
						else if(c=='+')       //操作符+
						{
							install("操作符","+",rpos,rnum);
						} 
						else if(c=='-')       //操作符-
						{
							install("操作符","-",rpos,rnum);
						}
						else if(c=='/')       //操作符/
						{
							state = 1;
						}
						else if(c=='*')       //操作符*
						{
							install("操作符","*",rpos,rnum);
						}
						else if(c=='=')       //操作符=
						{ 
							state = 2;
						}
						else if(c=='<')       //操作符<
						{
							state = 3;
						}
						else if(c=='>')       //操作符>
						{
							state = 4;
						}
						else if(c=='!')       //操作符!
						{
							state = 5;
						}
						else if(c=='{')       //分隔符{
						{
							install("分隔符","{",rpos,rnum);
						}
						else if(c=='}')       //分隔符}
						{
							install("分隔符","}",rpos,rnum);
						}
						else if(c=='(')		  //分隔符(
						{
							install("分隔符","(",rpos,rnum);
						}
						else if(c==')')		  //分隔符)
						{
							install("分隔符",")",rpos,rnum);
						}
						else if(c==';')       //分隔符;
						{
							install("分隔符",";",rpos,rnum);
						}
						else if((int)c==65535)
						{
							isRunning=false;
						}
						else if(isLetter(c))  //讀到了字符
						{
							bC = c;
							state = 6;
						}
						else if(isDigit(c))   //讀到了數(shù)字符
						{
							bC = c;
							str="";
							state = 7;
						}
						else if(c=='#')
						{
                           state=13;
						}
						else 
						{
							state=0;
							isRunning=false;
							fail(0);
						}
                       
						c = nextChar();
						break;
					case 1:
						if(c=='/')             //表示注釋后面的東西,不讀它
						{
							while((int)c!=10)
							{
								c = nextChar();
							}
							rpos=0;           //從下一行開始
							rnum++;
							c = nextChar();
							state = 0;
						}
						else 
						{
							state = 0;        // 下一個(gè)不是/, 后退一步到state=0
							install("操作符","/",rpos-1,rnum);
						}

						break;
					case 2:
                
						if(c=='=')           //表示操作符==
						{
							state = 0;
							install("操作符","==",rpos-1,rnum);
							c = nextChar();
						}
						else 
						{
							state = 0;
							install("操作符","=",rpos-1,rnum);
						}

						break;
					case 3:
						if(c=='=')          //表示操作符<=
						{
							state = 0;
							install("操作符","<=",rpos-1,rnum);
							c = nextChar();
						}
						else 
						{
							state = 0;
							install("操作符","<",rpos-1,rnum);
						}
                
						break;
					case 4:
						if(c=='=')          //表示操作符>=
						{
							state = 0;
							install("操作符",">=",rpos-1,rnum);
							c = nextChar();
						}
						else 
						{
							state = 0;
							install("操作符",">",rpos-1,rnum);
						}

						break;
					case 5:
						if(c=='=')         // 表示操作符!=
						{
							state = 0;
							install("操作符","!=",rpos-1,rnum);
							c = nextChar();
						}
						else 
						{
							state = 0;
							isRunning=false;
							fail(1);
						}
						break;
				
		     	        //***********************************
						//讀入標(biāo)識(shí)符,后面是 數(shù)字符和字母才是對(duì)的
						//***********************************
					case 6:                      
						String id = ""+bC;
						while(isLetter(c)||isDigit(c))
						{
							id+=c;
							c = nextChar();
						}
						if(isKey(id))
							install("關(guān)鍵字",id,rpos-id.Length,rnum);
						else
							install("標(biāo)識(shí)符",id,rpos-id.Length,rnum);
						state = 0;
						break;
						//*********************************************
						//讀入數(shù)字符,后面是 數(shù)字符(循環(huán)); .(轉(zhuǎn)狀態(tài));E(轉(zhuǎn)狀態(tài))
						//**********************************************
					case 7:                         
						str+=bC; 
						while(isDigit(c))            
						{
							str+=c;
							c=nextChar();
						}
						if(c=='.')                  
						{
							state=8;
							c=nextChar();         
						}
						else if(c=='E')              
						{
							state=10;
							c=nextChar();
						}
						
						//需要判斷是否是  11w等
						else if(isLetter(c))
						{
							state = 0;
							isRunning=false;
							fail(4);
                        
						}
						else                        
						{
							state = 0;
							install("數(shù)字符",str,rpos-str.Length,rnum);
						}
						break;
						//***********************************
						//  " ." 后面跟的字符,除了數(shù)字符其它都出錯(cuò)
						//***********************************
					case 8:                         
						str+='.';
						if(isDigit(c))
						{
							state = 9;
							str+=c;
							c=nextChar();
						}
						else
						{
							state = 0;
							isRunning=false;
							fail(2);
						}
						break;
						//***********************************************************************************
						//    ".數(shù)字符" 后面字符,可以是數(shù)字符或者是E(需要加錯(cuò)誤提示,當(dāng)不是空格而是其他字母時(shí)候)
						//************************************************************************************
					case 9:
                
						while(isDigit(c))
						{
							str+=c;
							c=nextChar();
						}
						if(c=='E')
						{
							state = 10;
							c=nextChar();
						}

						//需要判斷是否是  11w 等
						else if(isLetter(c))
						{
							state = 0;
							isRunning=false;
							fail(2);
                        
						}
						else
						{
							state = 0;
							install("數(shù)字符",str,rpos-str.Length,rnum);
						}
						break;

			          	//*********************************************
						// "E"  后面字符,  "+";"-";"數(shù)字符" 都是對(duì)的,其他都是錯(cuò)的
						//********************************************
					case 10:
						str+='E';
						if(c=='+'||c=='-')
						{
							state=11;
							str+=c;
							c=nextChar();
						}
						else if(isDigit(c))
						{
							state=12;
							str+=c;
							c=nextChar();
						}
						else
						{
							state=0;
							isRunning=false;
							fail(2);
						}
						break;
						//*****************************************
						//   "+" "-" 后面字符, 數(shù)字符是對(duì)的.其他都是錯(cuò)的
						//*****************************************
					case 11:
						if(isDigit(c))
						{
							state=12;
							str+=c;
							c=nextChar();
						}
						else
						{
							state = 0;
							isRunning=false;
							fail(2);
						}
						break;
						//***********************************
						// "E數(shù)字符"  后面字符,只有數(shù)字符是對(duì)的
						//*********************************
					case 12:
						while(isDigit(c))
						{
							str+=c;
							c=nextChar();
						}

						 if(isLetter(c))
						{
							state = 0;
							isRunning=false;
							fail(2);
                        
						}
						install("數(shù)字符",str,rpos-str.Length,rnum);
						state=0;
						break;


					case 13: //聲明部分
 
						 id ="#";
						while(isLetter(c))
						{
							id+=c;
							c = nextChar();
						}
						if(id=="#include"&&c=='<')
						{
										    
  					        id+=c;
							c = nextChar();
							while(isLetter(c)||this.isDigit(c))
							{
							
								id+=c;
								c = nextChar();
							}
							if(c=='>')
							{
								id+=c;
							    install("文件引入",id,rpos-id.Length,rnum);
								c = nextChar();
							}
							else
							 fail(3);
                                         
						}
						else
							fail(0);
						state = 0;
						break;
					
				}  
			}
		}
 
		private void fail(int i) 
		{
			string typeerror="";;
			switch(i)
			{
				case 0:
					typeerror="輸入非法字符錯(cuò)誤";
					break;
				case 1:
					typeerror="操作符錯(cuò)誤";
					break;

				case 2:
					typeerror="數(shù)字符錯(cuò)誤";
					break;

				case 3:
					typeerror="聲明錯(cuò)誤";
					break;
				case 4:
					typeerror="標(biāo)識(shí)符錯(cuò)誤";
					break;

			}
			
			Console.Write(typeerror+",位置<"+rnum+","+rpos+">");
		}

		private char nextChar()
		{
			char t;
			rpos++;
			if(br.Peek() == -1)
			{
				br.Close();
				return '~';
			}

			t= (char) br.Read();
			return t;
		}
    
		private void install(String tType,String aValue,int rpos,int rnum)
		{
			ArrayList tokenArray = new ArrayList();
			tokenArray.Add(tType);
			tokenArray.Add(aValue);
			tokenArray.Add("<"+rnum.ToString()+","+rpos.ToString()+">");
			symbolTable.Add(tokenArray);

			ArrayList tempArray=tokenArray;

			for(int j=0;j<tempArray.Count;j++)
			{
				Console.Write(tempArray[j].ToString()+"     ");
			}
			Console.WriteLine();

			str="";
		}
    
		private bool isLetter(char checkChar)
		{
			int checkInt = (int)checkChar;
			if((checkInt<=122&&checkInt>=97)||(checkInt>=65&&checkInt<=97))
			{
				return true;
			}
			return false;
		}
    
		private bool isDigit(char checkChar)
		{
			int checkInt = (int)checkChar;
			if(checkInt<=57&&checkInt>=48)
			{
				return true;
			}
			return false;
		}
    
		private bool isKey(String checkKey)
		{
			if(checkKey.Equals("if")||checkKey.Equals("then")||
				checkKey.Equals("else")||checkKey.Equals("int")||
				checkKey.Equals("real")||checkKey.Equals("while"))
			{
				return true;
			}
			return false;
		}
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜在线观看| 国产精品一级片在线观看| 91浏览器入口在线观看| 国产午夜精品一区二区三区视频| 极品少妇一区二区三区精品视频| 日韩欧美精品在线视频| 国产一区二区精品久久| 国产欧美日韩综合| 波多野结衣的一区二区三区| 中文字幕在线不卡| 91女人视频在线观看| 亚洲一区二三区| 欧美精品123区| 老司机精品视频线观看86| 久久久久久久久97黄色工厂| 成人精品鲁一区一区二区| 亚洲激情校园春色| 欧美高清激情brazzers| 精品一区二区在线播放| 亚洲国产精品二十页| 91成人免费在线视频| 婷婷综合久久一区二区三区| 精品欧美久久久| 成人综合在线视频| 亚洲国产综合在线| 欧美电视剧在线观看完整版| 成人在线综合网站| 亚洲自拍都市欧美小说| 欧美va亚洲va香蕉在线| 91丨九色丨蝌蚪富婆spa| 日本人妖一区二区| 国产精品传媒在线| 欧美一区二区三区在线视频 | 中文天堂在线一区| 日本道免费精品一区二区三区| 视频一区欧美精品| 中文字幕欧美日韩一区| 欧美日韩国产不卡| 成人一区在线看| 五月综合激情婷婷六月色窝| 久久久久久久性| 欧美日韩国产首页在线观看| 国产成人免费在线观看| 天天色综合成人网| 国产精品蜜臀av| 日韩三级视频在线看| 91色视频在线| 国内精品久久久久影院薰衣草| 亚洲三级在线免费| 欧美精品一区二区三区很污很色的| 91视频.com| 国产91精品精华液一区二区三区| 亚洲最色的网站| 国产精品色在线| 精品国产一区二区三区不卡 | 91麻豆123| 国产精品 欧美精品| 三级欧美韩日大片在线看| 综合久久国产九一剧情麻豆| 久久综合999| 欧美一级搡bbbb搡bbbb| 欧美在线观看视频一区二区 | 欧美一区二区视频在线观看2020 | 精品国精品自拍自在线| 欧日韩精品视频| 99久久久久免费精品国产 | 国产乱一区二区| 免费在线视频一区| 亚洲国产美国国产综合一区二区| 国产精品国产a级| 国产欧美日韩在线看| 久久综合国产精品| 精品精品欲导航| 日韩午夜激情免费电影| 欧美精品tushy高清| 精品视频123区在线观看| 91国偷自产一区二区使用方法| av在线不卡免费看| 成人白浆超碰人人人人| 成人福利视频在线看| 成人网在线播放| 成人一区二区三区中文字幕| 国产另类ts人妖一区二区| 韩日精品视频一区| 国产一区二区不卡老阿姨| 老色鬼精品视频在线观看播放| 奇米色777欧美一区二区| 日韩av电影天堂| 麻豆精品视频在线观看免费| 美女网站色91| 国产九色精品成人porny| 国产乱码字幕精品高清av| 国内精品在线播放| 国产suv精品一区二区883| 日韩欧美一区二区不卡| 日韩一级在线观看| 久久先锋影音av| 国产欧美日韩不卡免费| 国产精品二三区| 亚洲一区二区三区国产| 日韩av二区在线播放| 久久99热狠狠色一区二区| 国产乱人伦偷精品视频不卡| 成a人片亚洲日本久久| 色婷婷久久久亚洲一区二区三区 | 喷白浆一区二区| 精品综合久久久久久8888| 国产高清成人在线| 91丝袜美腿高跟国产极品老师 | 青青国产91久久久久久| 国产精品主播直播| 99久久精品免费观看| 欧美日韩一区二区在线观看视频| 欧美一区永久视频免费观看| 久久久美女艺术照精彩视频福利播放| 国产欧美精品一区aⅴ影院 | 日韩女优av电影| 欧美国产97人人爽人人喊| 一区二区三区久久久| 久久99久久99| 99riav一区二区三区| 欧美一卡二卡三卡四卡| 国产精品毛片a∨一区二区三区| 亚洲一区二区三区中文字幕| 精彩视频一区二区三区| 91视频com| 久久婷婷一区二区三区| 亚洲一区二区三区影院| 国产精品夜夜嗨| 欧美视频在线一区二区三区| 久久久91精品国产一区二区三区| 一区二区三区在线观看动漫| 国产在线看一区| 欧美亚洲一区三区| 日本一区二区三区在线不卡| 午夜一区二区三区视频| 成人免费毛片片v| 欧美成人aa大片| 亚洲午夜激情网页| 成人激情电影免费在线观看| 欧美一级免费大片| 亚洲精品精品亚洲| 国产91精品露脸国语对白| 欧美一区二区三区在线电影| 亚洲免费在线播放| 国产美女主播视频一区| 在线播放国产精品二区一二区四区 | 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日韩欧美www| 五月激情综合婷婷| 日本韩国一区二区| 国产精品无遮挡| 韩国欧美国产1区| 欧美一区二区三区白人| 亚洲在线视频一区| 91在线视频播放地址| 久久精品免费在线观看| 久久成人久久鬼色| 在线播放日韩导航| 偷拍一区二区三区四区| 色婷婷亚洲综合| 亚洲欧美激情插| 97se亚洲国产综合自在线| 国产丝袜在线精品| 国产精品亚洲成人| 欧美精品一区二区三区在线| 美女任你摸久久| 欧美一区二区三区免费在线看| 亚洲香肠在线观看| 久久久亚洲精品一区二区三区| 日产精品久久久久久久性色| 欧美欧美欧美欧美首页| 亚洲综合在线免费观看| 日本韩国一区二区三区| 一级做a爱片久久| 在线中文字幕不卡| 亚洲一区国产视频| 欧美中文字幕一区二区三区| 亚洲另类一区二区| 日本精品一级二级| 亚洲第一激情av| 欧美日韩成人高清| 日韩国产一区二| 日韩精品中文字幕一区| 精品一区二区三区香蕉蜜桃| 精品国产一区二区三区不卡| 国产在线国偷精品免费看| 久久久久国产精品厨房| 成人动漫一区二区| 亚洲免费观看高清完整版在线观看| 91丝袜美女网| 午夜精品福利视频网站| 欧美成人性战久久| 高潮精品一区videoshd| 国产精品高潮呻吟久久| 色综合久久99| 日韩成人一级片| 久久五月婷婷丁香社区| 99re6这里只有精品视频在线观看| 亚洲精品国久久99热|