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

📄 commandparser.jj

📁 与postgresql数据库结合的数据库水印软件包
💻 JJ
字号:
options{	LOOKAHEAD=2;}PARSER_BEGIN(CommandParser)package Watermill.rmill;import java.io.*;import Watermill.relational.*;import Watermill.kernel.*;public class CommandParser {    static CommandParser parser;        public static String skipQuote(String i){	return i.replaceAll("\"","");    }	   }PARSER_END(CommandParser)SKIP :{    " "|"\r"|"\t"|"\n"}SPECIAL_TOKEN :{  <SINGLE_LINE_COMMENT: "#" (~["\n","\r"])* ("\n"|"\r"|"\r\n")>}TOKEN:{         < NUMBER: (<DIGIT>)+ >|   < DIGIT: ["0"-"9"] >|   < READ: "read"|"READ" >|   < REAL: <NUMBER>("."(<NUMBER>)+)?>|   < PERCENTAGE: <REAL>"%" >|   < FRACTION: <NUMBER>"/"<NUMBER> >|   < STRING: ("\"") (~["\""])*("\"")>|   < LPAR: "(" >|   < RPAR: ")" >|   < ECHO: "ECHO"|"echo" >|   < COMMA: "," >|   < SEMICOLON: ";" >|   < LSET: "{">|   < CREATE: ("C"|"c")("R"|"r")("E"|"e")("A"|"a")("T"|"t")("E"|"e") >|   < POOL: ("P"|"p")("O"|"o")("O"|"o")("L"|"l") >|   < POOLTYPE: "greedy" | "wi" >|   < GLOBAL: ("G"|"g")("L"|"l")("O"|"o")("B"|"b")("A"|"a")("L"|"l")>|   < LOCAL: ("L"|"l")("O"|"o")("C"|"c")("A"|"a")("L"|"l")>|   < ON: ("O"|"o")("N"|"n")>|   < QUERY: ("Q"|"q")("U"|"u")("E"|"e")("R"|"r")("Y"|"y")>|   < RESET: ("R"|"r")("E"|"e")("S"|"s")("E"|"e")("T"|"t")>|   < AS: ("A"|"a")("S"|"s") >|   < GET: ("G"|"g")("E"|"e")("T"|"t") >|   < INSTANCE: ("I"|"i")("N"|"n")("S"|"s")("T"|"t")("A"|"a")("N"|"n")("C"|"c")("E"|"e")>|   < FOR: ("F"|"f")("O"|"o")("R"|"r") >|   < CLIENT: ("C"|"c")("L"|"l")("I"|"i")("E"|"e")("N"|"n")("T"|"t")> |   < FROM: ("F"|"f")("R"|"r")("O"|"o")("M"|"m") >|   < BENCH: ("B"|"b")("E"|"e")("N"|"n")("C"|"c")("H"|"h") >|   < IDENTIFY: ("I"|"i")("D"|"d")("E"|"e")("N"|"n")("T"|"t")("I"|"i")("F"|"f")("Y"|"y")>|   < TABLE: ("T"|"t")("A"|"a")("B"|"b")("L"|"l")("E"|"e")>|   < PRECISION: ("P"|"p")("R"|"r")("E"|"e")("C"|"c")("I"|"i")("S"|"s")("I"|"i")("O"|"o")("N"|"n")>|   < FORALL: "forall"|"FORALL" >|   < IID: "$ID">|   < IN: "IN" | "in" >|   < MODIFY: ("M"|"m")("O"|"o")("D"|"d")("I"|"i")("F"|"f")("Y"|"y")>|   < TABLESUFIX: ("T"|"t")("A"|"a")("B"|"b")("L"|"l")("E"|"e")("S"|"s")("U"|"u")("F"|"f")("I"|"i")("X"|"x") >|   < DATAALTERATION: ("D"|"d")("A"|"a")("T"|"t")("A"|"a")("A"|"a")("L"|"l")("T"|"t")("E"|"e")("R"|"r")("A"|"a")("T"|"t")("I"|"i")("O"|"o")("N"|"n")>|   < ALTER: "ALTER"|"alter" >|   < SURGERY: "SURGERY"|"surgery" >|   < DATALOSS: ("D"|"d")("A"|"a")("T"|"t")("A"|"a")("L"|"l")("O"|"o")("S"|"s")("S"|"s")>|   < OVERMARK: ("O"|"o")("V"|"v")("E"|"e")("R"|"r")("M"|"m")("A"|"a")("R"|"r")("K"|"k")>|   < PROBABILITY: ("P"|"p")("R"|"r")("O"|"o")("B"|"b")("A"|"a")("B"|"b")("I"|"i")("L"|"l")("I"|"i")("T"|"t")("Y"|"y")>|   < VALUE: ("V"|"v")("A"|"a")("L"|"l")("U"|"u")("E"|"e")>|   < COUNT: ("C"|"c")("O"|"o")("U"|"u")("N"|"n")("T"|"t")>|   < GRAPHIC: ("G"|"g")("R"|"r")("A"|"a")("P"|"p")("H"|"h")("I"|"i")("C"|"c")>|   < IDCLIENT: ("I"|"i")("D"|"d")("C"|"c")("L"|"l")("I"|"i")("E"|"e")("N"|"n")("T"|"t")>|   < EXECUTE: ("E"|"e")("X"|"x")("E"|"e")("C"|"c")("U"|"u")("T"|"t")("E"|"e")>|   < COMMAND: ("C"|"c")("O"|"o")("M"|"m")("M"|"m")("A"|"a")("N"|"n")("D"|"d")>|   < PARAMETERS: ("P"|"p")("A"|"a")("R"|"r")("A"|"a")("M"|"m")("E"|"e")("T"|"t")("E"|"e")("R"|"r")("S"|"s")>|   < SELECT: ("S"|"s")("E"|"e")("L"|"l")("E"|"e")("C"|"c")("T"|"t")>|   < WHERE: ("W"|"w")("H"|"h")("E"|"e")("R"|"r")("E"|"e")>|   < WITH: ("W"|"w")("I"|"i")("T"|"t")("H"|"h")>|   < TOTAL: ("T"|"t")("O"|"o")("T"|"t")("A"|"a")("L"|"l")>|   < ID: ["a"-"z","A"-"Z","_"] ( ["a"-"z","A"-"Z","_","0"-"9"] )* >}Command parse()throws Exception:{    Command ret;}{   ret = expr() ";"                                  { return ret;}}Command expr()throws Exception:{	Token read, read1, read2,read3,prob;	Token client, prec, value,value1,value2,value3;	Token id;	Token description;	Token publicKey;	boolean ret;	LocalConstraint localConstraint=null;	LocalConstraints localConstraints=new LocalConstraints(),lc=new LocalConstraints();	GlobalConstraints globalConstraints=new GlobalConstraints(),gc=new GlobalConstraints();	GroupGlobalConstraints groupGlobalConstraints=new GroupGlobalConstraints(),ggc=new GroupGlobalConstraints();	Token dbname;}{    <CREATE> read3=<POOLTYPE> <POOL>read=<STRING> <ON> read2=<STRING> <WITH>                               	 lc=getLocalConstraints() {localConstraints.addAll(lc);}    ("," gc=getGlobalConstraints())? { globalConstraints.addAll(gc);}    ("," ggc=getGroupGlobalConstraints())?	{ 	    groupGlobalConstraints.addAll(ggc);	    Msg.debug("Adding a group global"+ggc.toString());		    return new CreatePoolCommand(		skipQuote(read.toString()),		skipQuote(read2.toString()),		localConstraints,globalConstraints,		groupGlobalConstraints,		skipQuote(read3.toString()));	}    |	<CREATE> <CLIENT> id=<STRING> description=<STRING> publicKey=<STRING> 	{ return new CreateClientCommand(	    new UserData(skipQuote(id.toString()),			 skipQuote(description.toString()),			 skipQuote(publicKey.toString()))	    ); 	} 		          |   <GET><INSTANCE> dbname=<STRING> <FOR> client=<STRING> <FROM> read=<STRING>	{ return new GetInstanceCommand(	    skipQuote(dbname.toString()),	    skipQuote(client.toString()),	    skipQuote(read.toString())); 	}    |   <IDENTIFY> read=<STRING>		{ return new IdentifyCommand(skipQuote(read.toString()));}    |	<ECHO> read=<STRING>				{ return new EchoCommand(skipQuote(read.toString()));}        |   <SURGERY> read1=<STRING> read2=<STRING> read3=<NUMBER> 	{ return new SurgeryCommand(	    skipQuote(read1.toString()),	    skipQuote(read2.toString()),	    Integer.parseInt(read3.toString()));	}        |   <ALTER> read1=<STRING> read2=<NUMBER> read3=<NUMBER> 	{ return new EpsilonAttackCommand(	    skipQuote(read1.toString()),	    Integer.parseInt(read2.toString()),	    Integer.parseInt(read3.toString()));	}    |	<RESET> {return new ResetCommand();}        |	<READ> read=<STRING>	    		{ return (new ExecuteCommand(skipQuote(read.toString())));}    |	<BENCH> read=<STRING> value1=<NUMBER> value2=<NUMBER> value3=<NUMBER> 	{ return (new BenchCommand(		      skipQuote(read.toString()),		      Integer.parseInt(value1.toString()),		      Integer.parseInt(value2.toString()),		      Integer.parseInt(value3.toString())));	}}GlobalConstraints getGlobalConstraints() throws Exception:{    GlobalConstraints res=new GlobalConstraints();    GlobalConstraint r,r2;}{	    r=getGlobalConstraint() {res.add(r);}     ( "," r2=getGlobalConstraint() {res.add(r2);} )* 	{return res;}}GroupGlobalConstraints getGroupGlobalConstraints() throws Exception:{    GroupGlobalConstraints res=new GroupGlobalConstraints();    GroupGlobalConstraint r,r2;}{	    r=getGroupGlobalConstraint() {res.add(r);}     ( "," r2=getGroupGlobalConstraint() { res.add(r2);} )* 	{return res;}}GroupGlobalConstraint getGroupGlobalConstraint() throws Exception:{     GlobalConstraint gc;    Token read;}{    <FORALL> <IID> <IN> read=<STRING> gc=getGlobalConstraint() 	{return new GroupGlobalConstraint(	    gc,	    skipQuote(read.toString()));	}}GlobalConstraint getGlobalConstraint() throws Exception:{    Token read1,read2,read3,read4,read5;}{    <GLOBAL> read2 = <NUMBER> <ON> <QUERY> "{" <SELECT> read3 = <ID> "," read4 = <ID> <FROM> read5= <ID> <WHERE> 	 read1 = <STRING> "}" 	{return new GlobalConstraint(	    Integer.parseInt(read2.toString()),	    skipQuote(read3.toString()),	    skipQuote(read4.toString()),	    skipQuote(read5.toString()),	    skipQuote(read1.toString()));	}}LocalConstraints getLocalConstraints() throws Exception:{    LocalConstraints res=new LocalConstraints();    LocalConstraint r,r2;}{	    r=getLocalConstraint() {res.add(r);}     ( "," r2=getLocalConstraint() {res.add(r2);} )* 	{return res;}}LocalConstraint getLocalConstraint() throws Exception:{    Token distortion, tableName, attributeName, keyName;}{    <LOCAL> distortion = <NUMBER> <ON>	 "("tableName = <STRING> "," keyName=<STRING> "," attributeName = <STRING>")" 	{ return new LocalConstraint(	    Integer.parseInt(distortion.toString()),	    skipQuote(tableName.toString()),	    skipQuote(keyName.toString()),	    skipQuote(attributeName.toString()));	}}

⌨️ 快捷键说明

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