能力值:
( LV12,RANK:290 )
|
-
-
2 楼
网上资料不多
自带的帮助和示例研究研究?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不知道这篇文章能不能帮上忙.....
http://www.codeguru.com/csharp/.net/net_general/patterns/article.php/c12805
|
能力值:
( LV12,RANK:330 )
|
-
-
4 楼
谢谢,这个问题解决了
if是通过设置一个全局skip变量解决,所有的expression都首先判断skip,若不位零则不执行语义
while可以改变lex的文本缓冲区指针解决,不过这一方法要用到lex.cpp中非文档化的变量,可能只使用于特定版本,并且文本输入只能是内存缓冲区模式不能是FILE*yyin模式,因为FILE模式时只是部分文本在内存中
改变文本缓冲区的函数:
int resetloop(char*text)
{
*yy_c_buf_p=yy_hold_char;
yy_c_buf_p=text;
yy_hold_char=*text;
return 1;
}
char*text可由yytext获得,yytext正是"while"的首地址,且yytext就指向文本缓冲区内,yy_hold_char是yytext末尾的"\0"原先的字符,这是为了直接在文本缓冲区中形成yytext
"while" {yylval.state=(int)yytext;return WHILE;}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
文章我倒是不知道,PL Compiler 我没学过(汗颜)
现成品我倒是知道一些
http://ppodsiad.home.cern.ch/ppodsiad/seer/
http://mamaich.uni.cc/old_site.htm
etc...
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
需要二次扫描~
|
|
|