diff options
Diffstat (limited to 'Source/LexerParser/cmCTestResourceGroupsLexer.in.l')
-rw-r--r-- | Source/LexerParser/cmCTestResourceGroupsLexer.in.l | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/Source/LexerParser/cmCTestResourceGroupsLexer.in.l b/Source/LexerParser/cmCTestResourceGroupsLexer.in.l new file mode 100644 index 0000000..2aabea4 --- /dev/null +++ b/Source/LexerParser/cmCTestResourceGroupsLexer.in.l @@ -0,0 +1,102 @@ +%{ +/* 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=cmCTestResourceGroupsLexer.h -ocmCTestResourceGroupsLexer.cxx cmCTestResourceGroupsLexer.in.l + +Modify cmCTestResourceGroupsLexer.cxx: + - remove trailing whitespace: sed -i 's/\s*$//' cmCTestResourceGroupsLexer.h cmCTestResourceGroupsLexer.cxx + - remove blank lines at end of file: sed -i '${/^$/d;}' cmCTestResourceGroupsLexer.h cmCTestResourceGroupsLexer.cxx + - #include "cmStandardLexer.h" at the top: sed -i '1i#include "cmStandardLexer.h"' cmCTestResourceGroupsLexer.cxx + +*/ + +/* IWYU pragma: no_forward_declare yyguts_t */ + +#ifndef __clang_analyzer__ /* Suppress clang scan-build warnings */ + +#include "cmCTestResourceGroupsLexerHelper.h" + +#include <string> + +#include <cstddef> + +/*--------------------------------------------------------------------------*/ +%} + +%option prefix="cmCTestResourceGroups_yy" + +%option reentrant +%option noyywrap +%option nodefault +%pointer + +%s RESOURCE_GROUPS_START +%s RESOURCE_GROUPS_END +%s RESOURCE_START +%s RESOURCE_COUNT +%s RESOURCE_END + +NUMBER [0-9]+ +IDENTIFIER [a-z_][a-z0-9_]* + +%% + +<INITIAL,RESOURCE_GROUPS_START,RESOURCE_START>{IDENTIFIER}: { + BEGIN(RESOURCE_COUNT); + yyextra->SetResourceType(std::string(yytext, yyleng - 1)); +} + +<INITIAL,RESOURCE_GROUPS_START>{NUMBER} { + BEGIN(RESOURCE_GROUPS_END); + std::size_t len = yyleng; + yyextra->SetProcessCount(std::stoll(yytext, &len, 10)); +} + +<RESOURCE_COUNT>{NUMBER} { + BEGIN(RESOURCE_END); + std::size_t len = yyleng; + yyextra->SetNeededSlots(std::stoll(yytext, &len, 10)); + yyextra->WriteRequirement(); +} + +<RESOURCE_GROUPS_END,RESOURCE_END>,+ { + BEGIN(RESOURCE_START); +} + +<INITIAL,RESOURCE_GROUPS_START,RESOURCE_START>;+ { + BEGIN(RESOURCE_GROUPS_START); +} + +<RESOURCE_GROUPS_END,RESOURCE_END>;+ { + BEGIN(RESOURCE_GROUPS_START); + yyextra->WriteProcess(); +} + +<RESOURCE_START,RESOURCE_GROUPS_END,RESOURCE_END><<EOF>> { + yyextra->WriteProcess(); + return 0; +} + +<INITIAL,RESOURCE_GROUPS_START><<EOF>> { + return 0; +} + +<<EOF>> { + return 1; +} + +.|\n { + return 1; +} + +%% + +/*--------------------------------------------------------------------------*/ + +#endif /* __clang_analyzer__ */ |