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.
103 lines
2.3 KiB
103 lines
2.3 KiB
5 years ago
|
%{
|
||
|
/* 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__ */
|