📄 tips.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 + -