Parser is ready to be linked with DBEngine
This commit is contained in:
parent
456a0a8e3d
commit
32015a7409
1 changed files with 153 additions and 100 deletions
235
Parserv4.cpp
235
Parserv4.cpp
|
@ -46,9 +46,9 @@ vector<string> showCMD(vector<string> input)
|
|||
cout<<"Syntax error!"<<endl;
|
||||
}
|
||||
|
||||
cout<<"\nPassing the following arguments to dbEngine: "<<endl;
|
||||
cout<<"command :"<<input[0]<<endl;
|
||||
cout<<"argument: "<<input[1]<<endl;
|
||||
PRelation r(input[0]);
|
||||
|
||||
// send show command to DBEngine
|
||||
|
||||
return input;
|
||||
}
|
||||
|
@ -60,9 +60,9 @@ vector<string> saveCMD(vector<string> input)
|
|||
cout<<"Syntax error!"<<endl;
|
||||
}
|
||||
|
||||
cout<<"\nPassing the following arguments to dbEngine: "<<endl;
|
||||
cout<<"command :"<<input[0]<<endl;
|
||||
cout<<"argument: "<<input[1]<<endl;
|
||||
PRelation r(input[0]);
|
||||
|
||||
// send save command to DBEngine
|
||||
|
||||
return input;
|
||||
}
|
||||
|
@ -74,23 +74,23 @@ vector<string> closeCMD(vector<string> input)
|
|||
cout<<"Syntax error!"<<endl;
|
||||
}
|
||||
|
||||
cout<<"\nPassing the following arguments to dbEngine: "<<endl;
|
||||
cout<<"command :"<<input[0]<<endl;
|
||||
cout<<"argument: "<<input[1]<<endl;
|
||||
PRelation r(input[0]);
|
||||
|
||||
// send close command to DBEngine
|
||||
|
||||
return input;
|
||||
}
|
||||
|
||||
vector<string> openCMD(vector<string> input)
|
||||
{
|
||||
if (input.size() > 3)
|
||||
if (input.size() > 2)
|
||||
{
|
||||
cout<<"Syntax error!"<<endl;
|
||||
}
|
||||
|
||||
cout<<"\nPassing the following arguments to dbEngine: "<<endl;
|
||||
cout<<"command :"<<input[0]<<endl;
|
||||
cout<<"argument: "<<input[1]<<endl;
|
||||
PRelation r(input[0]);
|
||||
|
||||
// send open command to DBEngine
|
||||
|
||||
return input;
|
||||
}
|
||||
|
@ -291,26 +291,69 @@ vector<string> updateCMD(vector<string> input)
|
|||
{
|
||||
|
||||
vector <PAttribute> a;
|
||||
PAttribute temp;
|
||||
|
||||
vector <string> s;
|
||||
|
||||
vector <PExpression> e;
|
||||
//vector <PExpression> e;
|
||||
|
||||
input.erase(input.begin());
|
||||
|
||||
while(input[0] != ")")
|
||||
{
|
||||
e.push_back(input[0]);
|
||||
temp.setPAttributeName(input[0]);
|
||||
a.push_back(temp);
|
||||
temp.setPAttributeName("~");
|
||||
|
||||
input.erase(input.begin());
|
||||
|
||||
if(input[0] == "=")
|
||||
{
|
||||
input.erase(input.begin());
|
||||
|
||||
s.push_back(input[0]);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
cout<<"Syntax error!"<<endl;
|
||||
}
|
||||
|
||||
if(input[0] == ",")
|
||||
{
|
||||
input.erase(input.begin());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(input[0] == "WHERE")
|
||||
{
|
||||
PCondition c;
|
||||
while(input[0] != ";")
|
||||
if(input[0] == "(")
|
||||
{
|
||||
c.setPCondition(/*c.getCondition +*/ input[0]);
|
||||
//PCondition c;
|
||||
|
||||
PComparison c;
|
||||
POperand oops1;
|
||||
POperand oops2;
|
||||
POp op;
|
||||
|
||||
while(input[0] != ")")
|
||||
{
|
||||
oops1.setPOperand(input[0]);
|
||||
input.erase(input.begin());
|
||||
|
||||
oops2.setPOperand(input[0]);
|
||||
input.erase(input.begin());
|
||||
|
||||
op.setPOp(input[0]);
|
||||
input.erase(input.begin());
|
||||
|
||||
c.setPComparison(oops1.getPOperand(), op.getPOp(), oops2.getPOperand());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// send update command to DBEngine
|
||||
}
|
||||
|
||||
else cout<<"Syntax error!"<<endl;
|
||||
|
@ -318,49 +361,43 @@ vector<string> updateCMD(vector<string> input)
|
|||
|
||||
vector<string> deleteCMD(vector<string> input)
|
||||
{
|
||||
// parse out DELETE FROM
|
||||
if (input[0] == "DELETE" && input[1] == "FROM")
|
||||
{
|
||||
input.erase(input.begin());
|
||||
input.erase(input.begin());
|
||||
|
||||
PRelation r(input[0]);
|
||||
if(input[0] == "(")
|
||||
|
||||
if(input[0] == "WHERE")
|
||||
{
|
||||
vector <PExpression> e;
|
||||
input.erase(input.begin());
|
||||
|
||||
while(input[0] != ")")
|
||||
if(input[0] == "(")
|
||||
{
|
||||
if (input[0] == ",") input.erase(input.begin());
|
||||
//PCondition c;
|
||||
|
||||
e.push_back(input[0]);
|
||||
PComparison c;
|
||||
POperand oops1;
|
||||
POperand oops2;
|
||||
POp op;
|
||||
|
||||
input.erase(input.begin());
|
||||
while(input[0] != ")")
|
||||
{
|
||||
oops1.setPOperand(input[0]);
|
||||
input.erase(input.begin());
|
||||
|
||||
oops2.setPOperand(input[0]);
|
||||
input.erase(input.begin());
|
||||
|
||||
op.setPOp(input[0]);
|
||||
input.erase(input.begin());
|
||||
|
||||
c.setPComparison(oops1.getPOperand(), op.getPOp(), oops2.getPOperand());
|
||||
}
|
||||
}
|
||||
|
||||
cout << "Deleting: ";
|
||||
while(!e.empty())
|
||||
{
|
||||
cout << e[0].getPExpression() << " ";
|
||||
e.erase(e.begin());
|
||||
}
|
||||
cout << "from " << r.getName() << ".\n";
|
||||
|
||||
return input;
|
||||
|
||||
}
|
||||
else cout<<"Syntax error!"<<endl;
|
||||
|
||||
// send delete command to DBEngine
|
||||
}
|
||||
//parser relation name into Relation r
|
||||
|
||||
//parse out WHERE
|
||||
|
||||
//parse condition into Condition c
|
||||
|
||||
//cout "Deleting [c] from [r]"
|
||||
|
||||
//return input
|
||||
else cout<<"Syntax error!"<<endl;
|
||||
}
|
||||
|
||||
void par_line(vector<string> input) //calls par_command() or par_query() depending on first item from token list
|
||||
|
@ -379,57 +416,73 @@ void par_line(vector<string> input) //calls par_command() or par_query() dependi
|
|||
|
||||
else
|
||||
{
|
||||
//command
|
||||
// if ( input[0] == "open-cmd" || input[0] == "close-cmd" ||
|
||||
// input[0] == "save-cmd" || input[0] == "exit-cmd" ||
|
||||
// input[0] == "show-cmd" || input[0] == "create-cmd" ||
|
||||
// input[0] == "update-cmd" || input[0] == "insert-cmd" ||
|
||||
// input[0] == "delete-cmd" )
|
||||
// {
|
||||
// par_command(input[0]);
|
||||
// }
|
||||
if ( input[0] == "INSERT")
|
||||
{
|
||||
cout<<"\nPassing the following arguments to dbEngine: \nCommand: "<<input[0]<<endl;
|
||||
input.erase(input.begin());
|
||||
vector<string> insertInput = insertCMD(input);
|
||||
cout<<"arguments: "<<endl;
|
||||
displayTokenList(insertInput);
|
||||
|
||||
//query
|
||||
// if ( input[0] == "select" || input[0] == "project" ||
|
||||
// input[0] == "product" || input[0] == "difference" ||
|
||||
// input[0] == "union" || input[0] == "renaming" ||
|
||||
// input[0] == "update-cmd" || input[0] == "insert-cmd" ||
|
||||
// input[0] == "delete-cmd" )
|
||||
// {
|
||||
// par_query(input[0]);
|
||||
// }
|
||||
}
|
||||
|
||||
if ( input[0] == "INSERT")
|
||||
{
|
||||
cout<<"\nPassing the following arguments to dbEngine: \nCommand: "<<input[0]<<endl;
|
||||
input.erase(input.begin());
|
||||
vector<string> insertInput = insertCMD(input);
|
||||
cout<<"arguments: "<<endl;
|
||||
displayTokenList(insertInput);
|
||||
if ( input[0] == "CREATE")
|
||||
{
|
||||
cout<<"\nPassing the following arguments to dbEngine: \nCommand: "<<input[0]<<endl;
|
||||
input.erase(input.begin());
|
||||
|
||||
}
|
||||
vector<string> insertInput = createCMD(input);
|
||||
cout<<"arguments: "<<endl;
|
||||
displayTokenList(insertInput);
|
||||
|
||||
if ( input[0] == "CREATE")
|
||||
{
|
||||
cout<<"\nPassing the following arguments to dbEngine: \nCommand: "<<input[0]<<endl;
|
||||
input.erase(input.begin());
|
||||
input.erase(input.begin());
|
||||
}
|
||||
|
||||
vector<string> insertInput = insertCMD(input);
|
||||
cout<<"arguments: "<<endl;
|
||||
displayTokenList(insertInput);
|
||||
if ( input[0] == "DELETE")
|
||||
{
|
||||
cout<<"\nPassing the following arguments to dbEngine: \nCommand: "<<input[0]<<endl;
|
||||
input.erase(input.begin());
|
||||
|
||||
}
|
||||
vector<string> insertInput = deleteCMD(input);
|
||||
cout<<"arguments: "<<endl;
|
||||
displayTokenList(insertInput);
|
||||
|
||||
if ( input[0] == "SHOW")
|
||||
{
|
||||
showCMD(input);
|
||||
}
|
||||
}
|
||||
|
||||
if ( input[0] == "EXIT")
|
||||
{
|
||||
exitCMD(input);
|
||||
}
|
||||
if ( input[0] == "UPDATE")
|
||||
{
|
||||
cout<<"\nPassing the following arguments to dbEngine: \nCommand: "<<input[0]<<endl;
|
||||
input.erase(input.begin());
|
||||
|
||||
vector<string> insertInput = updateCMD(input);
|
||||
cout<<"arguments: "<<endl;
|
||||
displayTokenList(insertInput);
|
||||
|
||||
}
|
||||
|
||||
if ( input[0] == "SHOW")
|
||||
{
|
||||
showCMD(input);
|
||||
}
|
||||
|
||||
if ( input[0] == "EXIT")
|
||||
{
|
||||
exitCMD(input);
|
||||
}
|
||||
|
||||
if ( input[0] == "OPEN")
|
||||
{
|
||||
openCMD(input);
|
||||
}
|
||||
|
||||
if ( input[0] == "SAVE")
|
||||
{
|
||||
saveCMD(input);
|
||||
}
|
||||
|
||||
if ( input[0] == "CLOSE")
|
||||
{
|
||||
closeCMD(input);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue