| %{ |
| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| /* |
| |
| This file must be translated to C++ and modified to build everywhere. |
| |
| Run flex >= 2.6 like this: |
| |
| flex --nounistd -DFLEXINT_H --noline --header-file=cmDependsJavaLexer.h -ocmDependsJavaLexer.cxx cmDependsJavaLexer.in.l |
| |
| Modify cmDependsJavaLexer.cxx: |
| - remove trailing whitespace: sed -i 's/\s*$//' cmDependsJavaLexer.h cmDependsJavaLexer.cxx |
| - remove blank lines at end of file: sed -i '${/^$/d;}' cmDependsJavaLexer.h cmDependsJavaLexer.cxx |
| - #include "cmStandardLexer.h" at the top: sed -i '1i#include "cmStandardLexer.h"' cmDependsJavaLexer.cxx |
| |
| */ |
| |
| /* IWYU pragma: no_forward_declare yyguts_t */ |
| |
| #ifndef __clang_analyzer__ /* Suppress clang scan-build warnings */ |
| |
| #include <iostream> |
| |
| #include "cmDependsJavaParserHelper.h" |
| |
| /* Replace the lexer input function. */ |
| #undef YY_INPUT |
| #define YY_INPUT(buf, result, max_size) \ |
| do { result = yyextra->LexInput(buf, max_size); } while (0) |
| |
| /* Include the set of tokens from the parser. */ |
| #include "cmDependsJavaParserTokens.h" |
| |
| #define KEYWORD yylvalp->str = 0 |
| #define SYMBOL yylvalp->str = 0 |
| #define PRIMITIVE yylvalp->str = 0 |
| |
| /*--------------------------------------------------------------------------*/ |
| %} |
| |
| %option prefix="cmDependsJava_yy" |
| |
| %option reentrant |
| %option noyywrap |
| %pointer |
| |
| %x comment |
| %x string |
| |
| %% |
| "/*" { BEGIN(comment); } |
| <comment>"*/" { BEGIN(INITIAL); } |
| <comment>.|\n {} |
| |
| \" { BEGIN(string); } |
| <string>\" { BEGIN(INITIAL); return jp_STRINGLITERAL; } |
| <string>. {} |
| |
| abstract { KEYWORD; return jp_ABSTRACT; } |
| assert { KEYWORD; return jp_ASSERT; } |
| boolean { KEYWORD; return jp_BOOLEAN_TYPE; } |
| break { KEYWORD; return jp_BREAK; } |
| byte { KEYWORD; return jp_BYTE_TYPE; } |
| case { KEYWORD; return jp_CASE; } |
| catch { KEYWORD; return jp_CATCH; } |
| char { KEYWORD; return jp_CHAR_TYPE; } |
| class { KEYWORD; return jp_CLASS; } |
| continue { KEYWORD; return jp_CONTINUE; } |
| default { KEYWORD; return jp_DEFAULT; } |
| do { KEYWORD; return jp_DO; } |
| double { KEYWORD; return jp_DOUBLE_TYPE; } |
| else { KEYWORD; return jp_ELSE; } |
| extends { KEYWORD; return jp_EXTENDS; } |
| final { KEYWORD; return jp_FINAL; } |
| finally { KEYWORD; return jp_FINALLY; } |
| float { KEYWORD; return jp_FLOAT_TYPE; } |
| for { KEYWORD; return jp_FOR; } |
| if { KEYWORD; return jp_IF; } |
| implements { KEYWORD; return jp_IMPLEMENTS; } |
| import { KEYWORD; return jp_IMPORT; } |
| instanceof { KEYWORD; return jp_INSTANCEOF; } |
| int { KEYWORD; return jp_INT_TYPE; } |
| interface { KEYWORD; return jp_INTERFACE; } |
| long { KEYWORD; return jp_LONG_TYPE; } |
| native { KEYWORD; return jp_NATIVE; } |
| new { KEYWORD; return jp_NEW; } |
| package { KEYWORD; return jp_PACKAGE; } |
| private { KEYWORD; return jp_PRIVATE; } |
| protected { KEYWORD; return jp_PROTECTED; } |
| public { KEYWORD; return jp_PUBLIC; } |
| return { KEYWORD; return jp_RETURN; } |
| short { KEYWORD; return jp_SHORT_TYPE; } |
| static { KEYWORD; return jp_STATIC; } |
| strictfp { KEYWORD; return jp_STRICTFP; } |
| super { KEYWORD; return jp_SUPER; } |
| switch { KEYWORD; return jp_SWITCH; } |
| synchronized { KEYWORD; return jp_SYNCHRONIZED; } |
| this { KEYWORD; return jp_THIS; } |
| throw { KEYWORD; return jp_THROW; } |
| throws { KEYWORD; return jp_THROWS; } |
| transient { KEYWORD; return jp_TRANSIENT; } |
| try { KEYWORD; return jp_TRY; } |
| void { KEYWORD; return jp_VOID; } |
| volatile { KEYWORD; return jp_VOLATILE; } |
| while { KEYWORD; return jp_WHILE; } |
| |
| (true|false) { PRIMITIVE; return jp_BOOLEANLITERAL; } |
| \'([^\\]|\\.|\\u[0-9a-fA-F]*|\\[0-7]*)\' { PRIMITIVE; return jp_CHARACTERLITERAL; } |
| (0|[0-9]+)[lL]? { PRIMITIVE; return jp_DECIMALINTEGERLITERAL; } |
| ([0-9]+\.[0-9]*|\.[0-9]+|[0-9]+)([eE][+\-]?[0-9]+)?[fFdD]? { PRIMITIVE; return jp_FLOATINGPOINTLITERAL; } |
| 0[xX][0-9a-fA-F]+[lL]? { PRIMITIVE; return jp_HEXINTEGERLITERAL; } |
| null { PRIMITIVE; return jp_NULLLITERAL; } |
| |
| "&" { SYMBOL; return jp_AND; } |
| "&&" { SYMBOL; return jp_ANDAND; } |
| "&=" { SYMBOL; return jp_ANDEQUALS; } |
| "\]" { SYMBOL; return jp_BRACKETEND; } |
| "\[" { SYMBOL; return jp_BRACKETSTART; } |
| "\^" { SYMBOL; return jp_CARROT; } |
| "\^=" { SYMBOL; return jp_CARROTEQUALS; } |
| ":" { SYMBOL; return jp_COLON; } |
| "," { SYMBOL; return jp_COMMA; } |
| "}" { SYMBOL; return jp_CURLYEND; } |
| "{" { SYMBOL; return jp_CURLYSTART; } |
| "/" { SYMBOL; return jp_DIVIDE; } |
| "/=" { SYMBOL; return jp_DIVIDEEQUALS; } |
| "\$" { SYMBOL; return jp_DOLLAR; } |
| "\." { SYMBOL; return jp_DOT; } |
| "=" { SYMBOL; return jp_EQUALS; } |
| "==" { SYMBOL; return jp_EQUALSEQUALS; } |
| "\!" { SYMBOL; return jp_EXCLAMATION; } |
| "\!=" { SYMBOL; return jp_EXCLAMATIONEQUALS; } |
| ">" { SYMBOL; return jp_GREATER; } |
| ">=" { SYMBOL; return jp_GTEQUALS; } |
| ">>" { SYMBOL; return jp_GTGT; } |
| ">>=" { SYMBOL; return jp_GTGTEQUALS; } |
| ">>>" { SYMBOL; return jp_GTGTGT; } |
| ">>>=" { SYMBOL; return jp_GTGTGTEQUALS; } |
| "<<=" { SYMBOL; return jp_LESLESEQUALS; } |
| "<" { SYMBOL; return jp_LESSTHAN; } |
| "<=" { SYMBOL; return jp_LTEQUALS; } |
| "<<" { SYMBOL; return jp_LTLT; } |
| "-" { SYMBOL; return jp_MINUS; } |
| "-=" { SYMBOL; return jp_MINUSEQUALS; } |
| "--" { SYMBOL; return jp_MINUSMINUS; } |
| "\)" { SYMBOL; return jp_PAREEND; } |
| "\(" { SYMBOL; return jp_PARESTART; } |
| "%" { SYMBOL; return jp_PERCENT; } |
| "%=" { SYMBOL; return jp_PERCENTEQUALS; } |
| "\|" { SYMBOL; return jp_PIPE; } |
| "\|=" { SYMBOL; return jp_PIPEEQUALS; } |
| "\|\|" { SYMBOL; return jp_PIPEPIPE; } |
| "\+" { SYMBOL; return jp_PLUS; } |
| "\+=" { SYMBOL; return jp_PLUSEQUALS; } |
| "\+\+" { SYMBOL; return jp_PLUSPLUS; } |
| "\?" { SYMBOL; return jp_QUESTION; } |
| ";" { SYMBOL; return jp_SEMICOL; } |
| "\~" { SYMBOL; return jp_TILDE; } |
| "\*" { SYMBOL; return jp_TIMES; } |
| "\*=" { SYMBOL; return jp_TIMESEQUALS; } |
| |
| [a-z_A-Z][a-z_0-9A-Z]* { |
| yyextra->AllocateParserType(yylvalp, yytext, strlen(yytext)); |
| return jp_NAME; |
| } |
| |
| \/\/.*\n { } |
| [ \f\t\n\r] { } |
| . { |
| std::cerr << "Unknown character: " << yytext[0] |
| << " (" << (int)yytext[0] << ")" << std::endl; |
| yyextra->Error("Unknown character"); |
| return jp_ERROR; |
| } |
| |
| %% |
| |
| /*--------------------------------------------------------------------------*/ |
| |
| #endif /* __clang_analyzer__ */ |