新建 文本文档 (2).txt
上传用户:dehuomake
上传日期:2014-05-14
资源大小:1k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Flex

  1. //FILE:tiny.1
  2. %{
  3.   #include "globals.h"
  4.   #include"util.h"
  5.   #include"scan.h'
  6.   char token string[MAXLEN+1];
  7.   %}
  8. digit      [0-9]
  9. number     {digit}+
  10. letter     [a-zA-Z]
  11. identifier {letter|number}+
  12. newline    n
  13. whitespace  [t]+
  14. %%
  15. "IF"      {return  IF;}
  16. "then"    {return  THEN;}
  17. "else"    {return  ELSE;}
  18. "end"     {return  END;}
  19. "repeat"  {return  REPEAT;}
  20. "until"   {return  UNTIL;}
  21. "read"     {return READ;}
  22. "write"    {return   WRITE;}
  23. ":="         {return  ASSIGN;}
  24. "="          {return  EQ;}
  25. "<"          {return  LT;}
  26. "+"         {return  PLUS;}
  27. "*"         {return TIMES;}
  28. "-"        {return MINUS;}
  29. ";"         {return SEMI;}
  30. "("         {return  LPAREN;}
  31. ")"         {return  RPAREN;}
  32. {number} {return   NUM;}
  33. {identifier} {return   ID;}
  34. {newline}   {lineno++}
  35. {whitespace} {/*skip whitespace*/}
  36. "{          {char c;
  37.              do
  38.              {c=input();
  39.               if(c=='n') lineno++;
  40.              }while(c!='}');
  41.           }
  42.           {return ERROR;}
  43. %%
  44. Token Type get Token(void)
  45. { static int firstTime=TRUE;
  46.   TokenType  currentToken;
  47.   if(firstTime)
  48.   {firstTime=FALSE;
  49.   lineno++;
  50.   yyin=source;
  51.   yyout=listing;}
  52.   currentToken=yylex();
  53.   strncpy(tlkenString,yytex,MAXLEN);
  54.   if(TraceScan){
  55.   fprintf{  listing,"t%d:",lineno);
  56.   printToken(currentToken,takenString);
  57.   }
  58. return currentToken;}