mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-05-30 00:24:12 +08:00
commit a686a6f77e555513adc40228471c1ad1af4646b3 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 18:45:44 2025 -0800 spef compiles Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 986a3a00c246a927c494066c56bb627e55da8692 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 18:45:32 2025 -0800 spef compiles Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e8664d21c0b404a82967201c19a087c6680b7177 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 16:36:19 2025 -0800 saif compiles Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 496569018791bff19e57c534f29ac085520fc520 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 15:25:44 2025 -0800 mv bison error funcs to .yy Signed-off-by: James Cherry <cherry@parallaxsw.com> commit c1e7638840f94eb0baddee47507e607b000ab858 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 14:19:26 2025 -0800 parser cledanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 22bc72af46114ddb4fc5876655887ef1189f2195 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 14:19:06 2025 -0800 parser cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit caeedc4c9e2bf8e7a2f4aceb4ee4a5758efd1b36 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 12:52:55 2025 -0800 LibertyParser stack stream Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e029a01c2fc5ba0ed336978c5853d49095d07d66 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 12:10:35 2025 -0800 bison 3.2 required Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 2ca9423a2d518f51fdee6c41d41348dbfd548bae Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 12:05:19 2025 -0800 LibertyExpr -> LibExpr Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d64df413675c2978c0f24d5594cc201032233447 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 11:18:05 2025 -0800 LibertyExpr -> LibExpr Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 57cfbae240984bd7928862b1d6c3b1047ee5d71f Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 10:25:49 2025 -0800 comment Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 5249ac32d809ba30ce09437d61beaf4360bc2cd8 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 10:24:35 2025 -0800 parseError Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 8c5442007f99c06bfb16a496e00862353c82282c Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 10:11:46 2025 -0800 libecxpr parseError unused Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 67dacf60db2c0d7e3f7ceeae672b4bdaf1e039b7 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 10:09:39 2025 -0800 reader pvt includes Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1d7097399b4242833bf5a478c903b5d98afe674b Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 09:33:37 2025 -0800 libexpr life Signed-off-by: James Cherry <cherry@parallaxsw.com> commit cc85e357463399291cb1e7d7b628e5dd356ac8a9 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 31 09:21:12 2025 -0800 libexpr no location Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e3ef17a746eb4e8822cce732250ae77261d53cf9 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Jan 30 22:15:50 2025 -0800 compiles Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 3a34874297a5c82930ee0bd131425bccf48526ce Author: James Cherry <cherry@parallaxsw.com> Date: Thu Jan 30 20:03:06 2025 -0800 libexpr parse Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
147 lines
3.4 KiB
LLVM
147 lines
3.4 KiB
LLVM
%{
|
|
// OpenSTA, Static Timing Analyzer
|
|
// Copyright (c) 2025, Parallax Software, Inc.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
//
|
|
// The origin of this software must not be misrepresented; you must not
|
|
// claim that you wrote the original software.
|
|
//
|
|
// Altered source versions must be plainly marked as such, and must not be
|
|
// misrepresented as being the original software.
|
|
//
|
|
// This notice may not be removed or altered from any source distribution.
|
|
|
|
#include <cstdint>
|
|
|
|
#include "util/FlexDisableRegister.hh"
|
|
#include "StringUtil.hh"
|
|
#include "power/SaifReaderPvt.hh"
|
|
#include "SaifParse.hh"
|
|
#include "power/SaifScanner.hh"
|
|
|
|
#undef YY_DECL
|
|
#define YY_DECL \
|
|
int \
|
|
sta::SaifScanner::lex(sta::SaifParse::semantic_type *const yylval, \
|
|
sta::SaifParse::location_type *loc)
|
|
|
|
// update location on matching
|
|
#define YY_USER_ACTION loc->step(); loc->columns(yyleng);
|
|
|
|
typedef sta::SaifParse::token token;
|
|
%}
|
|
|
|
%option c++
|
|
%option yyclass="sta::SaifScanner"
|
|
%option prefix="Saif"
|
|
%option noyywrap
|
|
%option never-interactive
|
|
%option stack
|
|
%option yylineno
|
|
/* %option debug */
|
|
|
|
%x COMMENT
|
|
%x QUOTE
|
|
%x COND_EXPR
|
|
|
|
ID ([A-Za-z_])([A-Za-z0-9_$\[\]\\.])*
|
|
HCHAR "."|"/"
|
|
BLANK [ \n\t\r\b]
|
|
EOL \r?\n
|
|
|
|
%%
|
|
|
|
"/*" { BEGIN COMMENT; }
|
|
<COMMENT>{
|
|
|
|
"*/" { BEGIN INITIAL; }
|
|
|
|
.
|
|
{EOL} { loc->lines(); loc->step(); }
|
|
|
|
<<EOF>> {
|
|
error("unterminated comment");
|
|
BEGIN(INITIAL);
|
|
yyterminate();
|
|
}
|
|
}
|
|
|
|
"\"" { BEGIN QUOTE; token_.clear(); }
|
|
<QUOTE>{
|
|
|
|
"\\". { token_ += yytext[1]; }
|
|
|
|
"\"" {
|
|
BEGIN INITIAL;
|
|
yylval->string = sta::stringCopy(token_.c_str());
|
|
return token::QSTRING;
|
|
}
|
|
|
|
. { token_ += yytext[0]; }
|
|
|
|
<<EOF>> {
|
|
error("unterminated quoted string");
|
|
BEGIN(INITIAL);
|
|
yyterminate();
|
|
}
|
|
}
|
|
|
|
"//"[^\n]*{EOL} { loc->lines(); loc->step(); }
|
|
|
|
[0-9]+ {
|
|
yylval->uint = atoll(yytext);
|
|
return token::UINT;
|
|
}
|
|
|
|
":"|"{"|"}"|"["|"]"|","|"*"|";"|"="|"-"|"+"|"|"|"("|")"|{HCHAR} {
|
|
return ((int) yytext[0]);
|
|
}
|
|
|
|
SAIFILE { return token::SAIFILE; }
|
|
SAIFVERSION { return token::SAIFVERSION; }
|
|
DIRECTION { return token::DIRECTION; }
|
|
DESIGN { return token::DESIGN; }
|
|
DATE { return token::DATE; }
|
|
VENDOR { return token::VENDOR; }
|
|
PROGRAM_NAME { return token::PROGRAM_NAME; }
|
|
VERSION { return token::VERSION; }
|
|
DIVIDER { return token::DIVIDER; }
|
|
TIMESCALE { return token::TIMESCALE; }
|
|
DURATION { return token::DURATION; }
|
|
INSTANCE { return token::INSTANCE; }
|
|
NET { return token::NET; }
|
|
PORT { return token::PORT; }
|
|
T0 { return token::T0; }
|
|
T1 { return token::T1; }
|
|
TX { return token::TX; }
|
|
TZ { return token::TZ; }
|
|
TB { return token::TB; }
|
|
TC { return token::TC; }
|
|
IG { return token::IG; }
|
|
|
|
{ID} {
|
|
yylval->string = sta::stringCopy(yytext);
|
|
return token::ID;
|
|
}
|
|
|
|
{EOL} { loc->lines(); loc->step(); }
|
|
|
|
{BLANK} { /* Ignore blanks. */ }
|
|
|
|
/* Send out of bound characters to parser. */
|
|
. { return ((int) yytext[0]); }
|
|
|
|
%%
|