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

📄 核心代码.txt

📁 词法分析器
💻 TXT
字号:
核心代码:
	public void scan()	//扫描文件
	{
		analyser.outputArea.setText("");
		//用正则表达式查找匹配字符
		Matcher m=
			Pattern.compile("/\\*.*\\*/|\'.+\'|(\\++|\\--|\\>=|\\<=)|\\d+\\.\\d*|\\w+|\".+\"|\\S").matcher(analyser.inputArea.getText());
		while(m.find()){
			check(m.group());
		}
	}

	private void check(String s)	//检测匹配字符串
	{
		if(Character.isDigit(s.charAt(0)))
			checkDigit(s);
		else if(s.length()>8)
			out("the length>8",s);
		else if(s.length()==1)
			{
			  checkChar(s.charAt(0));
			 }
		else{
			checkString(s);
           }
	}

	private void checkDigit(String s)	//检测数字
	{
		if(s.indexOf(".")!=-1)
			out("浮点数",Double.valueOf(s).toString());
		else
			out("整数",s);
	}

	private void checkChar(char c)	//检测单个字符
	{
		
		switch (c){
		   	case '<':
		    	out("小于号", c);
		    	break;
		   	case '>':
		    	out("大于号", c);
		    	break;
		   	case '=':
		    	out("等于号", c);
		    	break;
		   	case '+':
		    	out("加号", c);
		    	break;
		   	case '-':
		    	out("减号", c);
		    	break;
		   	case '*':
		    	out("乘号", c);
		    	break;
		   	case '/':
		   		out("除号", c);
		    	break;
		   	case '(':
		    	out("左小括号", c);
		    	break;
		   	case ')':
		    	out("右小括号", c);
		    	break;
		   	case '[':
		    	out("左中括号", c);
		    	break;
		   	case ']':
		    	out("右中括号", c);
		    	break;
		   	case '{':
		    	out("左大括号", c);
		    	break;
		   	case '}':
		    	out("右大括号", c);
		    	break;
		   	case ',':
		    	out("逗号", c);
		    	break;
		   	case ';':
		    	out("分号", c);
		    	break;
		   	case '!':
		   		out("取反", c);
		    	break;
		    case '.':
		   		out("点号", c);
		    	break;
		    case ':':
		   		out("冒号", c);
		    	break;
		   	default:
		    	out("标识符", c);
		    	break;
		 }
	}

	private void checkString(String s)	//检测多个字符
	{
		if(s.charAt(0)=='\'')
			out("字符", s);
		else if(s.charAt(0)=='"')
			out("字符串", s);
		else if(s.charAt(0)=='/')
			out("注释",s);
		else if(s.equals("++"))
			out("自加符", s);
		else if(s.equals("--"))
			out("自减符", s);
		else if(s.equals(">="))
			out("大于等于", s);
		else if(s.equals("<="))
			out("小于等于", s);
else if(s.equals("div"))
			out("除以",s);
		else if(s.equals("mod"))
			out("取余",s);
		else if(isKeyWord(s))
			out("关键字", s);
		else
			out("标识符", s);
	}

	private boolean isKeyWord(String s)	//是否是关键字
	{
		boolean b=false;
		for(int i=0;i<KEY_WORD.length;i++)
			if(s.equals(KEY_WORD[i]))
				b=true;
		return b;
	}

⌨️ 快捷键说明

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