?? interpreter.java
字號(hào):
public class Interpreter {
int mean; //類(lèi)型,1代表創(chuàng)建表,2為刪除表,3為創(chuàng)建索引,4為刪除索引,5為選擇語(yǔ)句,6為插入語(yǔ)句,7為刪除語(yǔ)句,8為退出語(yǔ)句,9為執(zhí)行腳本語(yǔ)句
int attnumber;//創(chuàng)建表時(shí)屬性的個(gè)數(shù),或者是select操作的結(jié)果要求屬性個(gè)數(shù),當(dāng)=0時(shí)代表select選擇所有的屬性。
String table;//創(chuàng)建或刪除表時(shí)的表名,或者做select操作時(shí)的表名,或者是創(chuàng)建索引時(shí)的表名,或者是插入刪除記錄時(shí)的表名,或者是執(zhí)行exefile時(shí)的文件名
String[] attribute;//創(chuàng)建表時(shí)用的屬性列,或者是select操作時(shí)映射的屬性列
int[] atttype;//創(chuàng)建表時(shí)的各屬性類(lèi)型,1代表整型,2代表浮點(diǎn)型,3代表字符串型
int[] attlength;//創(chuàng)建表時(shí)的各屬性長(zhǎng)度,整型有4個(gè)字節(jié),浮點(diǎn)型也是4個(gè)字節(jié),字符串有2n個(gè)字節(jié)
String[] attindex;//此屬性上是否有索引,沒(méi)有為null,有就是此字符串的名為索引名
boolean[] unique;//創(chuàng)建表時(shí)表示各屬性是否為unique類(lèi)型
String primarykey;//創(chuàng)建表時(shí)主鍵的屬性名稱,
String uniqueatt;//或者是創(chuàng)建索引時(shí)的unique屬性名
String indexname;//創(chuàng)建索引時(shí)的索引名,或者是刪除索引時(shí)的索引名
int opnumber;//select或delete操作中,要求條件比較的個(gè)數(shù),或者是插入記錄時(shí)一共插入的屬性值個(gè)數(shù)
String[] opatt;//select或delete操作中,要求條件比較的各條件屬性名
int[] opcode;//select或delete操作中,1表示=,2表示<>,3表示<,4表示>,5表示<=,6表示>=
String[] op2;//select或delete操作中,各條件要比較的對(duì)像,或者是插入記錄時(shí)對(duì)各屬性插入的值
boolean[] ischar;//select或者insert或delete時(shí)各屬性值是否為字符型
public Interpreter(String s){
this.init(s);
}
public int init(String s) {
try{
int endIndex = 0;
while(endIndex+1<s.length()){
if((s.charAt(endIndex)==' '||s.charAt(endIndex)=='\n'))
endIndex++;
else
break;
}
int firstIndex = endIndex;
int tempIndex = 0;
endIndex = s.indexOf(' ',firstIndex);
if(endIndex==-1) endIndex = s.indexOf('\n',firstIndex);
if(endIndex==-1) endIndex = s.indexOf(';',firstIndex);
if(endIndex==-1){
System.out.println("Interpreter 1");
mean=0;
return 0;
}
String operate = s.substring(firstIndex, endIndex);
if(operate.equalsIgnoreCase("create")){
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 2");
mean=0;
return 0;
}
firstIndex=endIndex+1;
tempIndex = endIndex;
endIndex = s.indexOf(' ', tempIndex+1);
if(endIndex==-1)
{
endIndex = s.indexOf('\n',tempIndex+1);
if(endIndex==-1){
System.out.println("Interpreter 3");
mean=0;
return 0;
}
}
else if(s.substring(firstIndex,endIndex).indexOf('\n')>=0)
endIndex = s.substring(firstIndex,endIndex).indexOf('\n')+firstIndex;
operate = s.substring(firstIndex, endIndex);
if(operate.equalsIgnoreCase("table")){ //創(chuàng)建表 1
mean = 1;
firstIndex = endIndex;
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 4");
mean=0;
return 0;
}
firstIndex=endIndex+1;
endIndex = s.indexOf(' ', firstIndex);
if(endIndex==-1)
{
endIndex = s.indexOf('\n',firstIndex);
if(endIndex==-1){
System.out.println("Interpreter 5");
mean=0;
return 0;
}
}
else if(s.substring(firstIndex,endIndex).indexOf('\n')>=0)
endIndex = s.substring(firstIndex,endIndex).indexOf('\n')+firstIndex;
table = s.substring(firstIndex, endIndex);
firstIndex = endIndex;
endIndex = s.indexOf('(', endIndex);
if(endIndex==-1){
System.out.println("Interpreter 6");
mean=0;
return 0;
}
int temp;
attnumber=0;
temp = s.indexOf(',', endIndex);
while(temp!=-1){
attnumber++;
temp = s.indexOf(',', temp+1);
}
attribute = new String[attnumber];
atttype = new int[attnumber];
attlength = new int[attnumber];
unique = new boolean[attnumber];
for(int i=0;i<attnumber;i++){
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 7");
mean=0;
return 0;
}
firstIndex=endIndex+1;
endIndex = s.indexOf(' ',firstIndex);
if(endIndex==-1)
{
endIndex = s.indexOf('\n',firstIndex);
if(endIndex==-1){
System.out.println("Interpreter 8");
mean=0;
return 0;
}
}
else if(s.substring(firstIndex,endIndex).indexOf('\n')>=0)
endIndex = s.substring(firstIndex,endIndex).indexOf('\n')+firstIndex;
attribute[i]=s.substring(firstIndex,endIndex);
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 9");
mean=0;
return 0;
}
firstIndex = endIndex+1;
if(s.charAt(firstIndex)=='c')
endIndex = endIndex+5;
else if(s.charAt(firstIndex)=='i')
endIndex = endIndex+4;
else if(s.charAt(firstIndex)=='f')
endIndex = endIndex+6;
else
{
System.out.println("Interpreter 10");
mean=0;
return 0;
}
if(endIndex==-1){
System.out.println("Interpreter 11");
mean=0;
return 0;
}
if(s.substring(firstIndex, endIndex).equalsIgnoreCase("int"))
{
atttype[i]=1;
attlength[i]=4;
endIndex--;
}
else if(s.substring(firstIndex, endIndex).equalsIgnoreCase("float")){
atttype[i]=2;
attlength[i]=4;
endIndex--;
}
else if(s.substring(firstIndex, endIndex).equalsIgnoreCase("char")){
atttype[i]=3;
endIndex = s.indexOf('(',endIndex);
if(endIndex==-1){
System.out.println("Interpreter 12");
mean=0;
return 0;
}
tempIndex = endIndex;
endIndex = s.indexOf(')',tempIndex);
if(endIndex==-1){
System.out.println("Interpreter 13");
mean=0;
return 0;
}
try{
attlength[i]=2*Integer.parseInt(s.substring(tempIndex+1,endIndex));
}
catch(NumberFormatException e)
{
System.out.println("Interpreter 14");
mean=0;
return 0;
}
}
else {
System.out.println("Interpreter 15");
mean=0;
return 0;
}
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 16");
mean=0;
return 0;
}
firstIndex=endIndex+1;
if(s.charAt(firstIndex)==','){
endIndex = firstIndex+1;
unique[i]=false;
firstIndex = endIndex;
}
else
{
if(s.substring(firstIndex,firstIndex+6).equalsIgnoreCase("unique")){
unique[i]=true;
endIndex = s.indexOf(',',firstIndex);
firstIndex = endIndex+1;
endIndex = firstIndex;
}
else
{
System.out.println("Interpreter 17");
mean=0;
return 0;
}
}
}
endIndex = s.indexOf('(',firstIndex);
if(endIndex==-1){
System.out.println("Interpreter 18");
mean=0;
return 0;
}
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 19");
mean=0;
return 0;
}
firstIndex=endIndex+1;
endIndex = s.indexOf(')',firstIndex);
tempIndex=endIndex;
if(endIndex==-1){
System.out.println("Interpreter 20");
mean=0;
return 0;
}
while(endIndex-1>firstIndex){
if(s.charAt(endIndex-1)==' ')
endIndex--;
else
break;
}
if(endIndex-1==firstIndex){
System.out.println("Interpreter 21");
mean=0;
return 0;
}
primarykey = s.substring(firstIndex,endIndex);
endIndex = s.indexOf(')',tempIndex+1);
if(endIndex==-1){
System.out.println("Interpreter 22");
mean=0;
return 0;
}
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 23");
mean=0;
return 0;
}
firstIndex=endIndex+1;
if(s.charAt(firstIndex)!=';')
{
System.out.println("Interpreter 24");
mean=0;
return 0;
}
}
else if (operate.equalsIgnoreCase("index")){ //創(chuàng)建索引 3
mean = 3;
firstIndex = endIndex;
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 25");
mean=0;
return 0;
}
firstIndex=endIndex+1;
endIndex = s.indexOf(' ', firstIndex);
if(endIndex==-1)
{
endIndex = s.indexOf('\n',firstIndex);
if(endIndex==-1){
System.out.println("Interpreter 26");
mean=0;
return 0;
}
}
else if(s.substring(firstIndex,endIndex).indexOf('\n')>=0)
endIndex = s.substring(firstIndex,endIndex).indexOf('\n')+firstIndex;
indexname = s.substring(firstIndex, endIndex);
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 27");
mean=0;
return 0;
}
firstIndex=endIndex+1;
if(!s.substring(firstIndex,firstIndex+2).equalsIgnoreCase("on"))
{
System.out.println("Interpreter 28");
mean=0;
return 0;
}
firstIndex = firstIndex+2;
endIndex = firstIndex;
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
break;
}
if(endIndex+1==s.length()){
System.out.println("Interpreter 29");
mean=0;
return 0;
}
firstIndex=endIndex+1;
endIndex = s.indexOf(' ',firstIndex);
if(endIndex==-1)
{
endIndex = s.indexOf('\n',tempIndex+1);
if(endIndex==-1){
System.out.println("Interpreter 30");
mean=0;
return 0;
}
}
else if(s.substring(firstIndex,endIndex).indexOf('\n')>=0)
endIndex = s.substring(firstIndex,endIndex).indexOf('\n')+firstIndex;
table = s.substring(firstIndex,endIndex);
endIndex = s.indexOf('(',endIndex);
if(endIndex==-1){
System.out.println("Interpreter 31");
mean=0;
return 0;
}
while(endIndex+1<s.length()){
if((s.charAt(endIndex+1)==' '||s.charAt(endIndex+1)=='\n'))
endIndex++;
else
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -