免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3781 | 回复: 19
打印 上一主题 下一主题

(不用回复了................)能不能有比这个更好的写法?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-27 14:57 |只看该作者 |倒序浏览
本帖最后由 zqy1005 于 2010-06-27 20:18 编辑

高手和前辈指教下,說下 下面这段 更好的写法。。。
谢谢各位了

  1. yylex()
  2. {
  3.     int nstr;
  4.     extern int yyprevious;
  5.    
  6.     while ( (nstr = yylook()) >= 0)
  7.     yyfussy:
  8.     switch(nstr)
  9.     {
  10.         case 0:
  11.                 if (yywrap()) return(0); break;
  12.         
  13.         case 1:
  14.                 break;
  15.         
  16.         case 2:
  17.                 {yylval.vInt = 1; return DEBUG;}
  18.                 break;
  19.         
  20.         case 3:
  21.                 {yylval.vInt = 0; return DEBUG;}
  22.                 break;
  23.                
  24.         case 4:
  25.                 lua_linenumber++;
  26.                 break;
  27.                
  28.         case 5:
  29.                 break;
  30.         
  31.         case 6:
  32.                 return LOCAL;
  33.                 break;
  34.                
  35.         case 7:
  36.                 return IF;
  37.                 break;
  38.         case 8:
  39.                 return THEN;
  40.                 break;
  41.                
  42.         case 9:
  43.                 return ELSE;
  44.                 break;
  45.                
  46.         case 10:
  47.                 return ELSEIF;
  48.                 break;
  49.                
  50.         case 11:
  51.                 return WHILE;
  52.                 break;
  53.                
  54.         case 12:
  55.                 return DO;
  56.                 break;
  57.                
  58.         case 13:
  59.                 return REPEAT;
  60.                 break;
  61.                
  62.         case 14:
  63.                 return UNTIL;
  64.                 break;
  65.                
  66.         case 15:
  67.                 {
  68.                     yylval.vWord = lua_nfile-1;
  69.                     return FUNCTION;
  70.                 }
  71.                 break;
  72.                
  73.         case 16:
  74.                 return END;
  75.                 break;
  76.                
  77.         case 17:
  78.                 return RETURN;
  79.                 break;
  80.                
  81.         case 18:
  82.                 return LOCAL;
  83.                 break;
  84.                
  85.         case 19:
  86.                 return NIL;
  87.                 break;
  88.                
  89.         case 20:
  90.                 return AND;
  91.                 break;
  92.                
  93.         case 21:
  94.                 return OR;
  95.                 break;
  96.                
  97.         case 22:
  98.                 return NOT;
  99.                 break;
  100.                
  101.         case 23:
  102.                 return NE;
  103.                 break;
  104.                
  105.         case 24:
  106.                 return LE;
  107.                 break;
  108.                
  109.         case 25:
  110.                 return GE;
  111.                 break;
  112.                
  113.         case 26:
  114.                 return CONC;
  115.                 break;
  116.                
  117.         case 27:
  118.             
  119.         case 28:
  120.                 {
  121.                     yylval.vWord = lua_findenclosedconstant (yytext);
  122.                     return STRING;
  123.                 }
  124.                 break;
  125.         case 29:
  126.             
  127.         case 30:
  128.             
  129.         case 31:
  130.             
  131.         case 32:
  132.                 {
  133.                     yylval.vFloat = atof(yytext);
  134.                     return NUMBER;
  135.                 }
  136.                 break;
  137.                
  138.         case 33:
  139.                 {
  140.                     yylval.vWord = lua_findsymbol (yytext);
  141.                     return NAME;
  142.                 }
  143.                 break;
  144.                
  145.         case 34:
  146.                 return  *yytext;
  147.                 break;
  148.                
  149.         case -1:
  150.                 break;
  151.                
  152.         default:
  153.                 fprintf(yyout,"bad switch yylook %d",nstr);
  154.     }
  155.    
  156.     return(0);
  157. }
复制代码
大家看下原版的来自神奇的国度--巴西  的code style ,太tm神奇了

  1. yylex(){
  2. int nstr; extern int yyprevious;
  3. while((nstr = yylook()) >= 0)
  4. yyfussy: switch(nstr){
  5. case 0:
  6. if(yywrap()) return(0); break;
  7. case 1:
  8.                                 ;
  9. break;
  10. case 2:
  11.                         {yylval.vInt = 1; return DEBUG;}
  12. break;
  13. case 3:
  14.                         {yylval.vInt = 0; return DEBUG;}
  15. break;
  16. case 4:
  17.                                 lua_linenumber++;
  18. break;
  19. case 5:
  20.                                 ;
  21. break;
  22. case 6:
  23.                                 return LOCAL;
  24. break;
  25. case 7:
  26.                                 return IF;
  27. break;
  28. case 8:
  29.                                 return THEN;
  30. break;
  31. case 9:
  32.                                 return ELSE;
  33. break;
  34. case 10:
  35.                         return ELSEIF;
  36. break;
  37. case 11:
  38.                                 return WHILE;
  39. break;
  40. case 12:
  41.                                 return DO;
  42. break;
  43. case 13:
  44.                         return REPEAT;
  45. break;
  46. case 14:
  47.                                 return UNTIL;
  48. break;
  49. case 15:
  50.                         {
  51.                                          yylval.vWord = lua_nfile-1;
  52.                                          return FUNCTION;
  53.                                         }
  54. break;
  55. case 16:
  56.                                 return END;
  57. break;
  58. case 17:
  59.                                 return RETURN;
  60. break;
  61. case 18:
  62.                                 return LOCAL;
  63. break;
  64. case 19:
  65.                                 return NIL;
  66. break;
  67. case 20:
  68.                                 return AND;
  69. break;
  70. case 21:
  71.                                 return OR;
  72. break;
  73. case 22:
  74.                                 return NOT;
  75. break;
  76. case 23:
  77.                                 return NE;
  78. break;
  79. case 24:
  80.                                 return LE;
  81. break;
  82. case 25:
  83.                                 return GE;
  84. break;
  85. case 26:
  86.                                 return CONC;
  87. break;
  88. case 27:
  89.                         case 28:
  90.                       {
  91.                                        yylval.vWord = lua_findenclosedconstant (yytext);
  92.                                        return STRING;
  93.                                       }
  94. break;
  95. case 29:
  96. case 30:
  97. case 31:
  98. case 32:
  99. {
  100.                                         yylval.vFloat = atof(yytext);
  101.                                         return NUMBER;
  102.                                        }
  103. break;
  104. case 33:
  105.                {
  106.                                         yylval.vWord = lua_findsymbol (yytext);
  107.                                         return NAME;
  108.                                        }
  109. break;
  110. case 34:
  111.                                 return  *yytext;
  112. break;
  113. case -1:
  114. break;
  115. default:
  116. fprintf(yyout,"bad switch yylook %d",nstr);
  117. } return(0); }
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-06-27 15:39 |只看该作者
lua?

论坛徽章:
0
3 [报告]
发表于 2010-06-27 15:45 |只看该作者
本帖最后由 zqy1005 于 2010-06-27 15:50 编辑

恩 。。 是的

lua 的sourcecode
巴西佬而且還不用英语寫注释 真tm操蛋

p姨, 这个有没有更好的写法呢??

论坛徽章:
0
4 [报告]
发表于 2010-06-27 16:26 |只看该作者
没必要看这个,这不是源码,是lex,yacc生成文件。。

论坛徽章:
0
5 [报告]
发表于 2010-06-27 16:29 |只看该作者
我没看lua的代码,有人说让我看看。

论坛徽章:
0
6 [报告]
发表于 2010-06-27 16:37 |只看该作者
我没看lua的代码,有人说让我看看。
prolj 发表于 2010-06-27 04:29 PM



    code style 太tm痛苦了。。 巴西佬不知道怎么习惯这样的。。。

论坛徽章:
0
7 [报告]
发表于 2010-06-27 16:38 |只看该作者
没必要看这个,这不是源码,是lex,yacc生成文件。。
maxxfire 发表于 2010-06-27 04:26 PM



    是源码中的一部分  

     我就是想知道有没有比这个好的写法

论坛徽章:
0
8 [报告]
发表于 2010-06-27 16:54 |只看该作者
macro比magic number就好。

论坛徽章:
0
9 [报告]
发表于 2010-06-27 17:05 |只看该作者
呵呵,人家说好的代码看起来像诗。
诗难度高,不过起码变量要命名好,代码缩进好,模块清晰分类好,另外多写代码自然会写好。。

论坛徽章:
0
10 [报告]
发表于 2010-06-27 17:06 |只看该作者
这个有点难!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP