You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

193 lines
6.2 KiB

  1. %{
  2. /*=========================================================================
  3. Program: CMake - Cross-Platform Makefile Generator
  4. Module: $RCSfile$
  5. Language: C++
  6. Date: $Date$
  7. Version: $Revision$
  8. Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
  9. See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
  10. This software is distributed WITHOUT ANY WARRANTY; without even
  11. the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  12. PURPOSE. See the above copyright notices for more information.
  13. =========================================================================*/
  14. /*
  15. This file must be translated to C and modified to build everywhere.
  16. Run flex like this:
  17. flex --prefix=cmDependsJava_yy --header-file=cmDependsJavaLexer.h -ocmDependsJavaLexer.cxx cmDependsJavaLexer.in.l
  18. Modify cmDependsJavaLexer.c:
  19. - remove TABs
  20. - remove "yyscanner" argument from these methods:
  21. yy_fatal_error, cmDependsJava_yyalloc, cmDependsJava_yyrealloc, cmDependsJava_yyfree
  22. - remove all YY_BREAK lines occurring right after return statements
  23. - change while ( 1 ) to for(;;)
  24. Modify cmDependsJavaLexer.h:
  25. - remove TABs
  26. - remove the yy_init_globals function
  27. - remove the block that includes unistd.h
  28. - remove #line directives (avoids bogus warning on old Sun)
  29. */
  30. #include "cmStandardLexer.h"
  31. #include "cmDependsJavaParserHelper.h"
  32. /* Replace the lexer input function. */
  33. #undef YY_INPUT
  34. #define YY_INPUT(buf, result, max_size) \
  35. { result = yyextra->LexInput(buf, max_size); }
  36. /* Include the set of tokens from the parser. */
  37. #include "cmDependsJavaParserTokens.h"
  38. #define KEYWORD yylvalp->str = 0
  39. #define SYMBOL yylvalp->str = 0
  40. #define PRIMITIVE yylvalp->str = 0
  41. /*--------------------------------------------------------------------------*/
  42. %}
  43. %option reentrant
  44. %option noyywrap
  45. %pointer
  46. %x comment
  47. %x string
  48. %%
  49. "/*" { BEGIN(comment); }
  50. <comment>"*/" { BEGIN(INITIAL); }
  51. <comment>.|\n {}
  52. \" { BEGIN(string); }
  53. <string>\" { BEGIN(INITIAL); return jp_STRINGLITERAL; }
  54. <string>. {}
  55. abstract { KEYWORD; return jp_ABSTRACT; }
  56. assert { KEYWORD; return jp_ASSERT; }
  57. boolean { KEYWORD; return jp_BOOLEAN_TYPE; }
  58. break { KEYWORD; return jp_BREAK; }
  59. byte { KEYWORD; return jp_BYTE_TYPE; }
  60. case { KEYWORD; return jp_CASE; }
  61. catch { KEYWORD; return jp_CATCH; }
  62. char { KEYWORD; return jp_CHAR_TYPE; }
  63. class { KEYWORD; return jp_CLASS; }
  64. continue { KEYWORD; return jp_CONTINUE; }
  65. default { KEYWORD; return jp_DEFAULT; }
  66. do { KEYWORD; return jp_DO; }
  67. double { KEYWORD; return jp_DOUBLE_TYPE; }
  68. else { KEYWORD; return jp_ELSE; }
  69. extends { KEYWORD; return jp_EXTENDS; }
  70. final { KEYWORD; return jp_FINAL; }
  71. finally { KEYWORD; return jp_FINALLY; }
  72. float { KEYWORD; return jp_FLOAT_TYPE; }
  73. for { KEYWORD; return jp_FOR; }
  74. if { KEYWORD; return jp_IF; }
  75. implements { KEYWORD; return jp_IMPLEMENTS; }
  76. import { KEYWORD; return jp_IMPORT; }
  77. instanceof { KEYWORD; return jp_INSTANCEOF; }
  78. int { KEYWORD; return jp_INT_TYPE; }
  79. interface { KEYWORD; return jp_INTERFACE; }
  80. long { KEYWORD; return jp_LONG_TYPE; }
  81. native { KEYWORD; return jp_NATIVE; }
  82. new { KEYWORD; return jp_NEW; }
  83. package { KEYWORD; return jp_PACKAGE; }
  84. private { KEYWORD; return jp_PRIVATE; }
  85. protected { KEYWORD; return jp_PROTECTED; }
  86. public { KEYWORD; return jp_PUBLIC; }
  87. return { KEYWORD; return jp_RETURN; }
  88. short { KEYWORD; return jp_SHORT_TYPE; }
  89. static { KEYWORD; return jp_STATIC; }
  90. strictfp { KEYWORD; return jp_STRICTFP; }
  91. super { KEYWORD; return jp_SUPER; }
  92. switch { KEYWORD; return jp_SWITCH; }
  93. synchronized { KEYWORD; return jp_SYNCHRONIZED; }
  94. this { KEYWORD; return jp_THIS; }
  95. throw { KEYWORD; return jp_THROW; }
  96. throws { KEYWORD; return jp_THROWS; }
  97. transient { KEYWORD; return jp_TRANSIENT; }
  98. try { KEYWORD; return jp_TRY; }
  99. void { KEYWORD; return jp_VOID; }
  100. volatile { KEYWORD; return jp_VOLATILE; }
  101. while { KEYWORD; return jp_WHILE; }
  102. (true|false) { PRIMITIVE; return jp_BOOLEANLITERAL; }
  103. \'([^\\]|\\.|\\u[0-9a-fA-F]*|\\[0-7]*)\' { PRIMITIVE; return jp_CHARACTERLITERAL; }
  104. (0|[0-9]+)[lL]? { PRIMITIVE; return jp_DECIMALINTEGERLITERAL; }
  105. ([0-9]+\.[0-9]*|\.[0-9]+|[0-9]+)([eE][+\-]?[0-9]+)?[fFdD]? { PRIMITIVE; return jp_FLOATINGPOINTLITERAL; }
  106. 0[xX][0-9a-fA-F]+[lL]? { PRIMITIVE; return jp_HEXINTEGERLITERAL; }
  107. null { PRIMITIVE; return jp_NULLLITERAL; }
  108. "&" { SYMBOL; return jp_AND; }
  109. "&&" { SYMBOL; return jp_ANDAND; }
  110. "&=" { SYMBOL; return jp_ANDEQUALS; }
  111. "\]" { SYMBOL; return jp_BRACKETEND; }
  112. "\[" { SYMBOL; return jp_BRACKETSTART; }
  113. "\^" { SYMBOL; return jp_CARROT; }
  114. "\^=" { SYMBOL; return jp_CARROTEQUALS; }
  115. ":" { SYMBOL; return jp_COLON; }
  116. "," { SYMBOL; return jp_COMMA; }
  117. "}" { SYMBOL; return jp_CURLYEND; }
  118. "{" { SYMBOL; return jp_CURLYSTART; }
  119. "/" { SYMBOL; return jp_DIVIDE; }
  120. "/=" { SYMBOL; return jp_DIVIDEEQUALS; }
  121. "\$" { SYMBOL; return jp_DOLLAR; }
  122. "\." { SYMBOL; return jp_DOT; }
  123. "=" { SYMBOL; return jp_EQUALS; }
  124. "==" { SYMBOL; return jp_EQUALSEQUALS; }
  125. "\!" { SYMBOL; return jp_EXCLAMATION; }
  126. "\!=" { SYMBOL; return jp_EXCLAMATIONEQUALS; }
  127. ">" { SYMBOL; return jp_GREATER; }
  128. ">=" { SYMBOL; return jp_GTEQUALS; }
  129. ">>" { SYMBOL; return jp_GTGT; }
  130. ">>=" { SYMBOL; return jp_GTGTEQUALS; }
  131. ">>>" { SYMBOL; return jp_GTGTGT; }
  132. ">>>=" { SYMBOL; return jp_GTGTGTEQUALS; }
  133. "<<=" { SYMBOL; return jp_LESLESEQUALS; }
  134. "<" { SYMBOL; return jp_LESSTHAN; }
  135. "<=" { SYMBOL; return jp_LTEQUALS; }
  136. "<<" { SYMBOL; return jp_LTLT; }
  137. "-" { SYMBOL; return jp_MINUS; }
  138. "-=" { SYMBOL; return jp_MINUSEQUALS; }
  139. "--" { SYMBOL; return jp_MINUSMINUS; }
  140. "\)" { SYMBOL; return jp_PAREEND; }
  141. "\(" { SYMBOL; return jp_PARESTART; }
  142. "%" { SYMBOL; return jp_PERCENT; }
  143. "%=" { SYMBOL; return jp_PERCENTEQUALS; }
  144. "\|" { SYMBOL; return jp_PIPE; }
  145. "\|=" { SYMBOL; return jp_PIPEEQUALS; }
  146. "\|\|" { SYMBOL; return jp_PIPEPIPE; }
  147. "\+" { SYMBOL; return jp_PLUS; }
  148. "\+=" { SYMBOL; return jp_PLUSEQUALS; }
  149. "\+\+" { SYMBOL; return jp_PLUSPLUS; }
  150. "\?" { SYMBOL; return jp_QUESTION; }
  151. ";" { SYMBOL; return jp_SEMICOL; }
  152. "\~" { SYMBOL; return jp_TILDE; }
  153. "\*" { SYMBOL; return jp_TIMES; }
  154. "\*=" { SYMBOL; return jp_TIMESEQUALS; }
  155. [a-z_A-Z][a-z_0-9A-Z]* {
  156. yyextra->AllocateParserType(yylvalp, yytext, strlen(yytext));
  157. return jp_NAME;
  158. }
  159. \/\/.*\n { }
  160. [ \f\t\n\r] { }
  161. . {
  162. std::cerr << "Unknown character: " << yytext[0]
  163. << " (" << (int)yytext[0] << ")" << std::endl;
  164. yyextra->Error("Unknown character");
  165. return jp_ERROR;
  166. }
  167. %%