home *** CD-ROM | disk | FTP | other *** search
/ ftp.parl.clemson.edu / 2015-02-07.ftp.parl.clemson.edu.tar / ftp.parl.clemson.edu / pub / coven / coven-utils-1.1.tgz / coven-utils-1.1.tar / utils / coven-language / Coven_scanner.l < prev    next >
Text File  |  2003-01-28  |  3KB  |  107 lines

  1. /*
  2.  * (C) 2001 Clemson University
  3.  *
  4.  * See COPYING in top-level directory.
  5.  */
  6.  
  7.  
  8. %{
  9.  
  10. #include "Coven_lang.h"
  11. #include "symbol.h"
  12. #include "y.tab.h"
  13. extern YYSTYPE yylval;
  14.  
  15. int      atoi();
  16. double   atof();
  17. //.     {LIST; report_error(00,line);}
  18.  
  19. #define    LIST                strcat(text,yytext);
  20. #define    RETURNVAL(x)    yylval.i = (int)(token = x); return((int)x);
  21. #define    MAKELIST            produce_listing(line,text);text[0]=0;
  22. char     text[132];
  23. int      token;
  24.  
  25. %}
  26.  
  27. string      ["][^"]*["]
  28. float1      [-+]?[0-9]+"."[0-9]*([eE][-+]?[0-9]+)?
  29. float2      [-+]?"."[0-9]+([eE][-+]?[0-9]+)?
  30. float3      [-+]?[0-9]+[eE][-+]?[0-9]+
  31. int      [-+]?[0-9]+
  32. id    [_a-zA-Z][_0-9a-zA-Z]*
  33. w     [ \t\n]*
  34.  
  35. %%
  36.  
  37. "MODULES"     {LIST; RETURNVAL(MODULES);}
  38. "modules"     {LIST; RETURNVAL(MODULES);}
  39. "CONSTANTS"    {LIST; RETURNVAL(CONSTANTS);}
  40. "constants"    {LIST; RETURNVAL(CONSTANTS);}
  41. "VARIABLES"    {LIST; RETURNVAL(VARIABLES);}
  42. "variables"    {LIST; RETURNVAL(VARIABLES);}
  43. "PROGRAM"    {LIST; RETURNVAL(PROGRAM);}
  44. "program"    {LIST; RETURNVAL(PROGRAM);}
  45. "MODULE"        {LIST; RETURNVAL(MODULE);}
  46. "module"        {LIST; RETURNVAL(MODULE);}
  47. "INPUT"        {LIST; RETURNVAL(INPUT);}
  48. "input"        {LIST; RETURNVAL(INPUT);}
  49. "OUTPUT"        {LIST; RETURNVAL(OUTPUT);}
  50. "output"        {LIST; RETURNVAL(OUTPUT);}
  51. "INOUT"        {LIST; RETURNVAL(INPUT);}
  52. "inout"        {LIST; RETURNVAL(INPUT);}
  53. "STATIC"        {LIST; RETURNVAL(STATIC);}
  54. "static"        {LIST; RETURNVAL(STATIC);}
  55. "CONST"        {LIST; RETURNVAL(CONST);}
  56. "const"        {LIST; RETURNVAL(CONST);}
  57. "BUFFER"        {LIST; RETURNVAL(BUFFER);}
  58. "buffer"        {LIST; RETURNVAL(BUFFER);}
  59. "PARAMETER"    {LIST; RETURNVAL(PARAMETER);}
  60. "parameter"    {LIST; RETURNVAL(PARAMETER);}
  61. "THREAD"        {LIST; RETURNVAL(THREAD);}
  62. "thread"        {LIST; RETURNVAL(THREAD);}
  63. "PARALLEL"    {LIST; RETURNVAL(PARALLEL);}
  64. "parallel"    {LIST; RETURNVAL(PARALLEL);}
  65. "IF"            {LIST; RETURNVAL(IF);}
  66. "if"            {LIST; RETURNVAL(IF);}
  67. "ELSEIF"        {LIST; RETURNVAL(ELSEIF);}
  68. "elseif"        {LIST; RETURNVAL(ELSEIF);}
  69. "ELSE"        {LIST; RETURNVAL(ELSE);}
  70. "else"        {LIST; RETURNVAL(ELSE);}
  71. "WHILE"        {LIST; RETURNVAL(WHILE);}
  72. "while"        {LIST; RETURNVAL(WHILE);}
  73. "FOR"        {LIST; RETURNVAL(FOR);}
  74. "for"        {LIST; RETURNVAL(FOR);}
  75. "<"        {LIST; RETURNVAL(LT);}
  76. "<="        {LIST; RETURNVAL(LEQ);}
  77. ">"        {LIST; RETURNVAL(GT);}
  78. ">="        {LIST; RETURNVAL(GEQ);}
  79. "=="        {LIST; RETURNVAL(EQEQ);}
  80. "!="        {LIST; RETURNVAL(NEQ);}
  81. "++"        {LIST; RETURNVAL(PLUSPLUS);}
  82. "--"        {LIST; RETURNVAL(MINUSMINUS);}
  83. "+="        {LIST; RETURNVAL(PLUSEQ);}
  84. "-="        {LIST; RETURNVAL(MINUSEQ);}
  85.  
  86. \{                {LIST; RETURNVAL(LBRACE);}
  87. \}                {LIST; RETURNVAL(RBRACE);}
  88. \,               {LIST; RETURNVAL(COMMA);}
  89. \;                {LIST; RETURNVAL(SEMICOLON);}
  90. \=                {LIST; RETURNVAL(EQUALS);}
  91. \(                {LIST; RETURNVAL(LPAREN);}
  92. \)                {LIST; RETURNVAL(RPAREN);}
  93.  
  94. {id}         {LIST; yylval.c = yytext; return(IDENTIFIER);}
  95. {string}     {LIST; yylval.c = yytext; return(STRING);}
  96. {float1}     {LIST; yylval.f = atof(yytext); return(FLOAT);}
  97. {float2}     {LIST; yylval.f = atof(yytext); return(FLOAT);}
  98. {float3}     {LIST; yylval.f = atof(yytext); return(FLOAT);}
  99. {int}        {LIST; yylval.i = atoi(yytext); return(INTEGER);}
  100.  
  101. "//"[^\n]*    {}
  102. "\n"         {MAKELIST; line++;}
  103. [ \t]+      {LIST; /* eat white space */ }
  104. .             {LIST; fprintf(stderr,"scanner error bad char %s\n",yytext);}
  105.  
  106. %%
  107.