能力值:
( LV12,RANK:290 )
|
-
-
2 楼
网上资料不多
自带的帮助和示例研究研究?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不知道这篇文章能不能帮上忙.....
d05K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4G2k6r3g2Y4N6i4u0#2i4K6u0W2j5$3!0E0i4K6u0r3j5%4y4Z5j5i4u0H3i4K6u0r3i4K6u0W2L8X3g2@1i4K6u0r3L8X3g2@1i4K6g2X3k6$3g2F1k6i4u0S2L8q4)9J5c8Y4m8S2N6s2c8W2M7X3&6K6i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5k6i4m8Z5M7q4)9J5c8X3x3I4x3U0R3H3y4b7`.`.
|
能力值:
( 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 我没学过(汗颜)
现成品我倒是知道一些
d0aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4m8H3L8$3c8K6K9h3q4V1i4K6u0W2K9r3!0E0k6g2)9J5k6h3y4W2M7X3&6Q4x3X3g2U0K9q4)9J5c8Y4m8H3L8$3c8K6K9h3q4V1i4K6u0r3M7$3g2W2M7W2)9J5c8R3`.`.
d96K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2S2L8h3q4A6j5$3S2Q4x3X3g2#2L8X3W2Q4x3X3g2U0j5#2)9J5c8X3!0D9k6q4)9#2k6Y4y4A6N6r3g2Q4x3X3g2Z5N6r3@1`.
etc...
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
需要二次扫描~
|
|
|