Files
OpenSTA/liberty/LibExprLex.ll
James Cherry 398a22e97d LibExpr/spef/saif c++ parsers
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>
2025-02-01 14:49:30 -08:00

94 lines
2.3 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.
// Liberty function expression lexical analyzer
#include "util/FlexDisableRegister.hh"
#include "Debug.hh"
#include "StringUtil.hh"
#include "liberty/LibExprReaderPvt.hh"
#include "liberty/LibExprReader.hh"
#include "liberty/LibExprScanner.hh"
using sta::stringCopy;
using sta::FuncExpr;
#include "LibExprParse.hh"
#undef YY_DECL
#define YY_DECL \
int \
sta::LibExprScanner::lex(sta::LibExprParse::semantic_type *const yylval)
typedef sta::LibExprParse::token token;
%}
%option c++
%option yyclass="sta::LibExprScanner"
%option prefix="LibExpr"
%option noyywrap
%option never-interactive
%option stack
/* %option debug */
%x ESCAPED_STRING
PORT [A-Za-z_]([A-Za-z0-9_\.\[\]])*
OP "'"|"!"|"^"|"*"|"&"|"+"|"|"|1|0
PAREN "("|")"
BLANK [ \t\r]
ESCAPE \\
QUOTE \"
EOL \r?\n
%%
{OP}|{PAREN} { return ((int) yytext[0]); }
{ESCAPE}{EOL} { /* I doubt that escaped returns get thru the parser */ }
{ESCAPE}{QUOTE} { BEGIN(ESCAPED_STRING); token_.clear(); }
<ESCAPED_STRING>. { token_ += yytext[0]; }
<ESCAPED_STRING>{ESCAPE}{QUOTE} {
BEGIN(INITIAL);
yylval->string = stringCopy(token_.c_str());
return token::PORT;
}
{PORT} {
yylval->string = stringCopy(yytext);
return token::PORT;
}
{BLANK} {}
/* Send out of bound characters to parser. */
. { return (int) yytext[0]; }
%%