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

📄 sp_test.java

📁 JAVA编程实现用于处理表达式的简单编译器
💻 JAVA
字号:
import  java.util.*;

/**
 * 演示类 
 *
 * @author  林玉东.烟台
 * @version 1.0 11/01 2003 
 */
public class SP_test  implements SP_SimpleParseUI
{
	//
	public boolean  isVariable(String ident)
	{ 
		if(ident.equals("变量"))
			return true;
		else
			return false;
	}
	//
	public String  getVariableValue(String vname)
	{ 
		if(vname.equals("变量"))
			return "10";
		else
			return null;
	}
	public int  getVariableType(String vname)
	{
		return SP_Const.WT_StringConst;
	}
	//
	public String  getVariableValue(String vname,Object args)
	{
		return null;
	}
	//
	public boolean isUserFunction(String fname)
	{
		return fname.equals("max");
	}
	public void proUserFunction(SP_Parser  parser,String fname,SP_RunUnit src)
		throws Exception
	{
		SP_Scanner scanner=parser.getScanner();
		scanner.readOneWord();
		if(scanner.curWordType!=SP_Const.WT_LPAREN)
			throw new Exception("缺少( !");
        // 
		if(fname.equals("max")){
			parser.proMathExpression1(src);
			scanner.readOneWord();
			if(scanner.curWordType!=SP_Const.WT_COMMA)
				throw new Exception("缺少, !");
			SP_RunUnit targ=new SP_RunUnit();
			parser.proMathExpression1(targ);
			src.value1=(float)Math.max(src.value1,targ.value1);
		}
	}

	public static void main(String[] args)
	{
		//
		if(args.length!=1){
			System.out.println("Usage: java Sp_test exp!");
			return;
		}
		//
		SP_Parser parser=new SP_Parser(new SP_test());
		System.out.println("exp=="+args[0]);
		System.out.println("result="+parser.calExpress(args[0]));
		 
		//有些符号控制台输入不方便,输入的例子可参照下面
		/*
		System.out.println("------------------------------");
		System.out.println("result="+parser.calExpress("12*3/4>5 && 1<0"));
		System.out.println("result="+parser.calExpress("(int)变量+max(12+8/2,pow(变量,2))"));
		System.out.println("result="+parser.calExpress("getSomeDate(getDateSeconds(2003,12,1,0,0,0),\"yyyy年mm月--dd日\")"));
		System.out.println("result="+parser.calExpress("getSomeTime(getDateSeconds(2003,12,1,15,3,5),\"hh--mm--ss\")"));
		System.out.println("result="+parser.calExpress("[']+getNowDate('year')+'年/'+getNowDate('mon')+'月/'+getNowDate('day')+'日 !'+[']"));
		System.out.println("result="+parser.calExpress("10+pow(2+pow(4*2/4,2)/2,2+pow(2,2)-3)-pow(3,2)"));
		//
		String exp="((int)变量*107042400+8+3600*2+60*3)";
		System.out.println("result="+parser.calExpress("getYear"+exp));
		System.out.println("result="+parser.calExpress("getMonth"+exp));
		System.out.println("result="+parser.calExpress("getDay"+exp));
		System.out.println("result="+parser.calExpress("getHour"+exp));
		System.out.println("result="+parser.calExpress("getMinute"+exp));
		//
		System.out.println("result="+parser.calExpress("getDate(\"yyyy mm-dd\",-1)"));
		System.out.println("result="+parser.calExpress("getTime(\"hh点mm分ss秒\")"));
		System.out.println("result="+parser.calExpress("(int)getDate(\"dd\",-1)+100"));
        String sss="12345--45";
		System.out.println("result="+parser.calExpress("substring(\"12345--45\",0,6)"));
		//
		String date=parser.calExpress( "getSDate(\"2004 01-24\",\"yyyy mm-dd\",\"mon\",-1)" );
		System.out.println("=="+date);
		date=parser.calExpress( "getSDate(\"2004 11-01\",\"yyyy mm-dd\",\"day\",-1)" );
		System.out.println("=="+date);
		*/
		 
	}

}
//cd _output && java hexinfo.simpleparse.SP_test

⌨️ 快捷键说明

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