武汉大学编译原理第二次作业
2015-09-23 15:22
337 查看
%{ #include <time.h> #include <stdlib.h> #include <stdio.h> int length; %} SEP (";"|";"|"."|"。"|","|","|","|"!"|"!"|"\""|"”"|":") %x STMT %% [^ \n\t\r] { if (rand() % 2 ) printf("尼玛"); unput(yytext[0]); length = 0; BEGIN(STMT); } [ \t\n\r] ; <STMT>{SEP}+[ \t]*(\n)*|{SEP}*[ \t]*(\n)+\r* { if (length <= 4) { printf("!!!!!"); } else { if (rand() % 3) printf( "!你伤不起啊!!!"); if (rand() % 3) printf( "!亲!!!!!"); if (rand() % 2) printf( "!有木有!!!!!"); } printf("!\n"); BEGIN(INITIAL); } <STMT>"我们" length += 2; printf ("咱们") ; <STMT>"我" length += 2; printf ("偶") ; <STMT>"什么" length += 4; printf ("神马"); <STMT>"你" length += 2; printf ("泥"); <STMT>"同志" length += 4; printf ("筒子"); <STMT>"院士" length += 4; printf ("猿士"); <STMT>"同学" length += 4; printf ("童鞋"); <STMT>"教授" length += 4; printf ("叫兽"); <STMT>"的" length += 2; printf ("滴"); <STMT>"人才" length += 4; printf ("淫才"); <STMT>[\x81-\xfe][\x40-\xfe] length +=2; ECHO; <STMT>. length++; ECHO; %% main( int argc, char **argv ) { ++argv, --argc; if ( argc > 0 ) { if ((yyin = fopen( argv[0], "rb" )) == NULL) { printf("the file %s could'nt open!\n", argv[0]); exit (1); } } else yyin = stdin; srand((int)time(0)); yylex(); fclose(yyin); return 0; } int yywrap() { return 1; }
相关文章推荐
- 递归与尾递归总结
- 缺的两天课需要马上补上才好
- html学习笔记-DOM
- SecureCRT从本传相片到服务器的注意事项
- Properties类一些常用的用法
- 图片验证代码
- Mac下破解PhotoShop CS6,支持Retina屏幕
- ROS软路由的基本操作
- 第十一章 Vim之宏的使用
- 命令集记录
- ISING模型
- RabbitMQ远程不能访问问题的解决
- jQuery停止动画和判断是否处于动画状态(转)
- 沃通WoSign受邀参展"2015 ISC中国互联网安全大会"
- 单例模式 Singleton
- 写出高性能的多核并行编程
- 第一章关键术语
- LeetCode(45) Simplify Path
- java中的序列化
- Leetcode75: Single Number III