📄 parse.h
字号:
#ifndef PARSE_H
#define PARSE_H
#include "Glob_Var.H"
#include "Tools.H"
/* -------------------------------------------------- */
CmdRec_Type CmdLine_To_CmdRec(char*CmdLine)
{
CmdRec_Type CmdRec ;
int i,k,TokenPos ;
char Token[30];
Init_CmdRec(CmdRec);
CmdRec.Fld=(FldInfor_T*)malloc(15*sizeof(FldInfor_T));
for(i=1;i<=15;i++)
{
CmdRec.Fld[i].FldLen=0 ;
CmdRec.Fld[i].DicimalLen=0 ;
}
TokenPos=0 ;
CutBlank_Head_Tail(CmdLine);
GetSubStr_Between(CmdLine,&TokenPos,'(',')',CmdRec.Token1); /* 取得括号之间的字符串 */
k=CountSymbol(CmdRec.Token1,',')+1 ;
CmdRec.Count=k ;
if(strlen(CmdRec.Token1)>0)
{
CmdLine[strlen(CmdLine)-strlen(CmdRec.Token1)-2]='\0' ;
}
CutBlank_Head_Tail(CmdLine);
while(strlen(CmdLine)>=1)
{
CutBlank_Head_Tail(CmdLine);
TokenPos=0 ;
GetSubStr_By_Delimitor(CmdLine,&TokenPos," ",Token);
for(i=0;i<strlen(Token)&&!strstr(Token,"=");i++)
{
Token[i]=toupper(Token[i]);
}
for(i=0;i<8;i++)
{
/* 判断是否为命令动词 */
if(strcmp(Token,SysWordArray[i].SysW_S)==0)
{
CmdRec.Cmd_N=SysWordArray[i].SysW_N ;
}
/* 判断是否为介词 */
else if((strcmp(Token,"TABLE")==0)||
(strcmp(Token,"VALUES")==0)||
(strcmp(Token,"INTO")==0)||
(strcmp(Token,"FROM")==0)||
(strcmp(Token,"SET")==0))
{
strcpy(CmdRec.Phase,Token);
}
else
{
/* 判断是否为表达式 */
char*ptr ;
ptr=strchr(Token,'=');
if(ptr)strcpy(CmdRec.Exp,Token);
else
{
ptr=strchr(Token,'*');
/* 判断是否为全部范围 */
if(ptr)strcpy(CmdRec.Range,"*");
else
{
ptr=strchr(Token,',');
if(ptr)strcpy(CmdRec.Range,Token);
/* 判断是那些字段范围 */
else strcpy(CmdRec.UserStr,Token);
}
}
}
}
strncpy(CmdLine,&CmdLine[strlen(Token)],strlen(CmdLine)-strlen(Token)+1);
}
return CmdRec ;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -