scriptengine.cpp
来自「一个支持中文的类C语言编译器」· C++ 代码 · 共 1,952 行 · 第 1/5 页
CPP
1,952 行
}
//如果有else子句
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();//{
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$LBP){
MessageBox(NULL,"要求为{","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}//要求为{
ptstr_end=this->m_waWrdAnly.m_pPtWd.pFst_word;//记录位置
piPnt_end=this->m_waWrdAnly.m_pPtWd.piFst_word;//用于指示位置:else后{
int lev_else=1;//置{的层次为1
while(lev_else!=0||TDim.WdTp!=$RBP){
if(*this->m_waWrdAnly.m_ptStr=='\000'){
MessageBox(NULL,"找不到与之配对的}","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(piPnt_end,piPnt_end+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;//直到文件尾找不到
}
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp==$LBP){//查到{
lev_else++;
}
else{
if(TDim.WdTp==$RBP){//查到}
lev_else--;
}
}
}//至此,位置指针指向'}'后一字符,且越过了else{}中语句的检查与执行
return SUCCESSFUL;
}
else{//条件不满足,执行else子句(如果else子句存在)
//越过 if'{' '}' 对中语法检查与执行,寻找与之配对的下一'}'
int lev_if=1;//置{的层次为1
while(lev_if!=0||TDim.WdTp!=$RBP){
if(*this->m_waWrdAnly.m_ptStr=='\000'){
MessageBox(NULL,"找不到与之配对的}","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(piPointer,piPointer+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;//直到文件尾找不到
}
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp==$LBP){//查到{
lev_if++;
}
else{
if(TDim.WdTp==$RBP){//查到}
lev_if--;
}
}
}//至此,位置指针已指向if(){--'}'后一字符,且越过了{}中语句的检查与执行
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$ELSE){//针对else的子句不存在
this->m_waWrdAnly.BackWord();
return SUCCESSFUL;
}
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();//{
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$LBP){
MessageBox(NULL,"else子句后要求为{","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;//else子句后要求为{
}
//提供对空语句的支持
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();//}
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp==$RBP) return SUCCESSFUL;
else this->m_waWrdAnly.BackWord();
rT=Sentence();
if(rT!=SUCCESSFUL){
if(rT==NOTTHISKIND){
MessageBox( NULL,"无法识别的语句","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
}
return ERRINPROCESS;
}
while(rT==SUCCESSFUL){
rT=Sentence();
//已到达文件尾
if(*this->m_waWrdAnly.m_ptStr=='\000') break;
}
if(rT==ERRINPROCESS)return ERRINPROCESS;
if(rT!=NOTTHISKIND){
MessageBox( NULL,"遇到非正常结束","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$RBP){
MessageBox(NULL,"要求以'}'做结","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;//要求以'}'做结
}
return SUCCESSFUL;
}
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^开发环境
else{
//提供对空语句的支持
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();//}
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp==$RBP){
goto ELSE_DEV;//if(...){}空语句后是否有else
}
else{
this->m_waWrdAnly.BackWord();
}
rT=Sentence();
if(rT!=SUCCESSFUL){
if(rT==NOTTHISKIND){
MessageBox( NULL,"无法识别的语句","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
}
return ERRINPROCESS;
}
while(rT==SUCCESSFUL){
rT=Sentence();
//已到达文件尾
if(*this->m_waWrdAnly.m_ptStr=='\000') break;
}
if(rT==ERRINPROCESS)return ERRINPROCESS;
if(rT!=NOTTHISKIND){
MessageBox( NULL,"遇到非正常结束","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$RBP){
MessageBox(NULL,"要求以'}'做结","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;//要求以'}'做结
}
ELSE_DEV: //else判断
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$ELSE){//针对else子句不存在
this->m_waWrdAnly.BackWord();
return SUCCESSFUL;
}
//如果有else子句
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();//{
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$LBP){
MessageBox(NULL,"else子句后要求为{","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;//else子句后要求为{
}
//提供对空语句的支持
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();//}
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp==$RBP) return SUCCESSFUL;
else this->m_waWrdAnly.BackWord();
rT=Sentence();
if(rT!=SUCCESSFUL){
if(rT==NOTTHISKIND){
MessageBox( NULL,"无法识别的语句","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
}
return ERRINPROCESS;
}
while(rT==SUCCESSFUL){
rT=Sentence();
//已到达文件尾
if(*this->m_waWrdAnly.m_ptStr=='\000') break;
}
if(rT==ERRINPROCESS)return ERRINPROCESS;
if(rT!=NOTTHISKIND){
MessageBox( NULL,"遇到非正常结束","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$RBP){
MessageBox(NULL,"要求以'}'做结","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;//要求以'}'做结
}
return SUCCESSFUL;
}
break;
case $WHILE://while
TDim.InitTD();
TDim=this->m_waWrdAnly.Getsym();
if(TDim.WdTp==$ILLEGALWORD){//所有getsym()函数后均应该有下述语句
MessageBox(NULL,"非法字符","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;
}
if(TDim.WdTp!=$LPAR){
MessageBox(NULL,"要求为左括号(","错误",MB_OK|MB_ICONHAND);
if(m_waWrdAnly.m_pctrEdit){
this->m_waWrdAnly.m_pctrEdit->SetSel(this->m_waWrdAnly.m_pPtWd.piFst_word,this->m_waWrdAnly.m_pPtWd.piLst_word+1);
this->m_waWrdAnly.m_pctrEdit->SetFocus();
}
return ERRINPROCESS;////要求为左括号(
}
pts_while=this->m_waWrdAnly.m_ptStr;//复合条件首-> while(后
pip_while=this->m_waWrdAnly.m_piPointer;//复合条件首-> while(后
L_WHILE:
if(!DBCondition(conInfo
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?