- 论坛徽章:
- 0
|
现在有二个.l和.y文件,是为了加载前台屏幕scr文件并且执行域处理函数的,在SCO上运行是正常的,但是在red hat LINUX 上就不能正常运行了:
Even.l
%{
.....头文件
}%
ws [ \t]+
comment #.*
qstring \"[^\"\n]*[\"\n]
id [a-zA-Z_][a-zA-Z0-9_]*
ch \'[a-zA-Z0-9 \ \/\\%!@#$%\^&*():'"<>.,;|+={}[\]-]\'
ctrl_ch WCTRL\({ch}\)
dig -?[0-9]+
nl [\n]
cr [\r]
{ctrl_ch} {
char *p;
/*
XDebug(_X_, "ctrl_ch is [%s]", yytext);
*/
WriteLog(_S_, "ctrl_ch is [%s]", yytext);
gnKey = toupper(yytext[1]);
if((p=(char *)strchr(yytext, '\''))!=NULL)
p++;
else
p=yytext+7;
gnKey = WCTRL(toupper(p[0]));
return KEY;
}
{ws} ;
{comment} ;
REQUEST { return REQUESTNAME; }
EVENT { return EVENTNAME; }
ACCELERATOR { return ACCELERATORNAME; }
REGISTER { return REGISTERNAME; }
ENDREQUEST { return ENDREQUEST; }
ENDEVENT { return ENDEVENT; }
ENDACCELERATOR { return ENDACCELERATOR; }
ENDREGISTER { return ENDREGISTER; }
WF1 { gnKey=WF1 ; return KEY; }
WF2 { gnKey=WF2 ; return KEY; }
WF3 { gnKey=WF3 ; return KEY; }
......
——————————————————————————————————————————————————————————-
Even.y
.....................
%token <string> QSTRING ID NULLX
%token <cmd> KEY CLASS SEQUENCE EVENT TYPE NUMBER
/* literal keyword tokens */
%token <cmd> REQUESTNAME EVENTNAME ACCELERATORNAME REGISTERNAME ENDREQUEST ENDEVENT ENDACCELERATOR ENDREGISTER
%type <cmd> key class sequence event type menuitem
%type <string> id action
%%
config_element_list: config_element
| config_element_list config_element
| register_name config_element_list config_element register_terminator
{
return 0; /* 当需要从FORM的配置文件中直接读取配置时 */
}
| register_name register_terminator
{
return 0;
}
;
config_element: request_def
| event_def
| accelerator_def
;
request_def: request_name request_contents request_terminator
| request_name request_terminator
;
request_name: REQUESTNAME id
{
start_request(gpForm, gpwaWin, $2);
}
| REQUESTNAME
{
start_request(gpForm, gpwaWin, strdup("default"));
}
;
request_terminator: ENDREQUEST
{
end_request(gpForm, gpwaWin);
}
;
request_contents: request_content
| request_contents request_content
;
request_content: key ',' class ',' sequence ',' event
{
add_request(gpForm, gpwaWin, $1, $3, $5, $7);
}
;
register_name: REGISTERNAME id
{
;
}
| REGISTERNAME
{
;
}
;
register_terminator: ENDREGISTER
{
;
}
;
.................
————————————————————————————————————————————————————————————
SCR文件。。。
......
APP
........
ITEM PRINT
TITLE "打印"
AT 65 20
CLASS IBUT
AFTER Fam_Xzfmlg_Cxmx_PRINT_AFT
ENDITEM
REGISTER
REQUEST
WCTRL('F'), 0, SEQ_AFT_FIELD, REQ_SUBMIT
'-', 0, SEQ_AFT_FIELD, REQ_SUBMIT
ENDREQUEST
EVENT
REQ_APP_SEND, REQ_SUBMIT, SEQ_AFT_FIELD, FamCxSubmit
ENDEVENT
ENDREGISTER
ENDAPP
.......
现在运行到REGISTER这,读取REQUEST时,报syntax error REQUEST错误,请问SCO和linux在这里的语法上有什么差异,谢谢 |
|