選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

51 行
813 B

  1. %{
  2. #include <iostream>
  3. #define YY_DECL extern "C" int yylex()
  4. #include "lolfx.tab.h"
  5. %}
  6. %x C_COMMENT
  7. %x CPP_COMMENT
  8. %%
  9. /*
  10. * Our language's keywords
  11. */
  12. "technique" { return TECHNIQUE; }
  13. "pass" { return PASS; }
  14. /*
  15. * Various tokens
  16. */
  17. [0-9]+\.[0-9]+ { yylval.fval = atof(yytext); return FLOAT; }
  18. [0-9]+ { yylval.ival = atoi(yytext); return INT; }
  19. [a-zA-Z][a-zA-Z0-9_]* {
  20. /* Copy token for now */
  21. yylval.sval = strdup(yytext);
  22. return NAME;
  23. }
  24. [ \t\n]+ ;
  25. . { return *yytext; }
  26. /*
  27. * Ignore C comments
  28. */
  29. "/*" { BEGIN(C_COMMENT); }
  30. <C_COMMENT>"*/" { BEGIN(INITIAL); }
  31. <C_COMMENT>[^*]* { }
  32. <C_COMMENT>. { }
  33. /*
  34. * Ignore C++ comments
  35. */
  36. "//" { BEGIN(CPP_COMMENT); }
  37. <CPP_COMMENT>.*\n { BEGIN(INITIAL); }
  38. %%