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

📄 tips.txt

📁 使用flex和bison
💻 TXT
字号:

读取{时的动作
所以要区分对待 state init proc switch if sf elseif elsesf else 
 state init proc {}只处理作用域

    
单个if
if           if写1  set 3
<	     表达式写 3
id1	     表达式写 3
id2          表达式写 3
result g11 g12   {写 3
		
g11:            {写 3     //compiler 读到{ 写g11 ,换行写ICRM 同时 int_k++ stirng_k++  
  ICRM          {写 3    //ivr读到这个标记动作是 int_k++ stirng_k++
 ..........
  DCRM          }写 3 //compile 读到 } 写DCRM 换行写g12 ;ivr读到这里 int_k--,string_k--同时所有的都出堆  
g12             }写 3
                }  set 1


一个if一个else
if  // 1 if set 3
<   // 表达式写 3
id1  // 表达式写 3
id2   //表达式写 3
result g11 g12 // {写 3
g11:    { 写 3   //compiler 读到{ 写g11 ,换行写ICRM 同时 int_k++ stirng_k++  
  ICRM  { 写 3 //ivr读到这个标记动作是 int_k++ stirng_k++
 ..........
  DCRM  } 写 3//compile 读到 } 写DCRM 换行写g12 ;ivr读到这里 int_k--,string_k--同时所有的都出堆  
g12   } 写 set 1
else result go13   else 写 set 5//compile读到else else 函数写 else result go13 ,IVR到这里判断 result =1 就转到go13,=0就goon 
  ICRM   { 写 5// compile 读到{ 写ICRM  
  DCRM   } 写 5 //compioe读到} 写DCRM 同时换行写g13
g13     } 写 set 1




一个if 一个elseif一个else
if
<
id1
id2
result g11 g12

g11: //compiler 读到{ 写g11 ,换行写ICRM 同时 int_k++ stirng_k++  
  ICRM  //ivr读到这个标记动作是 int_k++ stirng_k++
 ..........
  DCRM//compile 读到 } 写DCRM 换行写g12 ;ivr读到这里 int_k--,string_k--同时所有的都出堆  
g12
elseif result go13 //compile读到elseif elseif 函数写 elseif result go13 ,IVR到这里判断 result =1 就转到go13,=0就goon 
  ICRM // compile 读到{ 写ICRM  
  DCRM //compioe读到} 写DCRM 同时换行写g13
g13
else result go14//compile读到else else 函数写 else result go14 ,IVR到这里判断 result =1 就转到go13,=0就goon 
  ICRM // compile 读到{ 写ICRM  
  DCRM //compioe读到} 写DCRM 同时换行写g14
go14


go** 分配原则
go10001 开始
gossss = 10000


switch(ds)
{
	case "a":
	break;
	case "b":
	break;	
	default:
	break;

}

读到switch :inboolresult(current_bool_result)  set current_bool_result = 6  set ds ,get switchendgo
 
case ds ,a   //  case xie  set current_bool_result = 8
result g11 g12
g11

goto switchendgo //break xie
g12 
case ds,b
result g13 g14
go13

goto switchendgo
go14

default  default 
....
goto switchendgo //break xie

switchendgo  //} xie  


beginsection / endsection

sectionflag = 1;
sectionk = 0;
{  sectionk ++  = 1 
    
}  sectionk -- = 0 // 如果sectionflag = 1 ,sectionk 减1后小于0 就可以打印 不匹配的beginsection了

这样可以解决如下问题
		
		sql = "select count(*) from t_rengongserver where station = 1 " ;
		sqlselect(connid,sql);
		string ret = getfieldvalue(0);
		sf(ret>"0")
		{
			beginsection();
			sql = "select id,linenum,operatorid from t_rengongserver where servicetime in (select min(servicetime) from t_rengongserver where station = 1) " ;
			sqlselect(connid,sql);
			id = getfieldvalue(0);
			linenum = getfieldvalue(1);
			operatorid = getfieldvalue(2);
			sql = "select id,yewu from t_yewu where caller ='" + $sys_caller + "'" ;
			sqlselect(connid,sql);
			servicetypeid = getfieldvalue(0);
			yewu = getfieldvalue(1);
			sql = "update t_rengongserver set station = 2,caller = '" 
			+ $sys_caller 
			+ "',servicetype  = '" 
			+ yewu 
			+ "',state = '忙碌' ,servicetime = getdate() where id = " + id ;
			sqlcommand(connid,sql);	
			goto m_beginjump;
		}
		else
		{
			endsection();
			goto m_agentbusy;
		}
	

读到beginsection时候 sectionflag 必须=0;否则就打印qiantao定义
读到endsection时候 sectionflag 必须=1 sectionk必须=0 否则就打印不匹配错误	

⌨️ 快捷键说明

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