Et hop j'enleve le haut !
This commit is contained in:
parent
feac8a1c76
commit
07b7fa587a
|
@ -1,252 +0,0 @@
|
||||||
%{
|
|
||||||
/*
|
|
||||||
* This file is part of the Alliance CAD System
|
|
||||||
* Copyright (C) Laboratoire LIP6 - Département ASIM
|
|
||||||
* Universite Pierre et Marie Curie
|
|
||||||
*
|
|
||||||
* Home page : http://www-asim.lip6.fr/alliance/
|
|
||||||
* E-mail support : mailto:alliance-support@asim.lip6.fr
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU Library General Public License as published
|
|
||||||
* by the Free Software Foundation; either version 2 of the License, or (at
|
|
||||||
* your option) any later version.
|
|
||||||
*
|
|
||||||
* Alliance VLSI CAD System 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 the GNU C Library; see the file COPYING. If not, write to the Free
|
|
||||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* ###--------------------------------------------------------------### */
|
|
||||||
/* file : pat_pars.lex */
|
|
||||||
/* date : Mar 13 2000 */
|
|
||||||
/* version : v109 */
|
|
||||||
/* author : Pirouz BAZARGAN SABET */
|
|
||||||
/* content : parser-driver function */
|
|
||||||
/* ###--------------------------------------------------------------### */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "mut.h"
|
|
||||||
#include "pat.h"
|
|
||||||
#include "pat_type.h"
|
|
||||||
#include "pat_desc_y.h"
|
|
||||||
|
|
||||||
/* ICI LUDO
|
|
||||||
#ifdef YY_DECL
|
|
||||||
#undef YY_DECL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define YY_DECL int pat_lex (lval_pnt) YYSTYPE *lval_pnt;
|
|
||||||
#define yylval (*lval_pnt)
|
|
||||||
FIN LUDO */
|
|
||||||
|
|
||||||
static char buff [1024];
|
|
||||||
%}
|
|
||||||
|
|
||||||
%s INS_PAT
|
|
||||||
%s OUT_PAT
|
|
||||||
%s DTC_FRM
|
|
||||||
|
|
||||||
letter [a-zA-Z]
|
|
||||||
|
|
||||||
%%
|
|
||||||
\: {
|
|
||||||
/*printf ("Colon\n");*/
|
|
||||||
BEGIN INS_PAT;
|
|
||||||
return (Colon);
|
|
||||||
}
|
|
||||||
(\;)+ {
|
|
||||||
/*printf ("Semicolon\n");*/
|
|
||||||
BEGIN OUT_PAT;
|
|
||||||
|
|
||||||
if (yyleng < 16)
|
|
||||||
yylval.valu = yyleng - 1;
|
|
||||||
else
|
|
||||||
yylval.valu = 15;
|
|
||||||
|
|
||||||
return (Semicolons);
|
|
||||||
}
|
|
||||||
\. {
|
|
||||||
/*printf ("Dot\n");*/
|
|
||||||
BEGIN OUT_PAT;
|
|
||||||
return (Dot);
|
|
||||||
}
|
|
||||||
\, {
|
|
||||||
/*printf ("Comma\n");*/
|
|
||||||
return (Comma);
|
|
||||||
}
|
|
||||||
\< {
|
|
||||||
/*printf ("_LTSym\n");*/
|
|
||||||
return (_LTSym);
|
|
||||||
}
|
|
||||||
\> {
|
|
||||||
/*printf ("_GTSym\n");*/
|
|
||||||
return (_GTSym);
|
|
||||||
}
|
|
||||||
\( {
|
|
||||||
/*printf ("LeftParen\n");*/
|
|
||||||
BEGIN INITIAL;
|
|
||||||
return (LeftParen);
|
|
||||||
}
|
|
||||||
\) {
|
|
||||||
/*printf ("RightParen\n");*/
|
|
||||||
BEGIN DTC_FRM;
|
|
||||||
return (RightParen);
|
|
||||||
}
|
|
||||||
<OUT_PAT>\+ {
|
|
||||||
/*printf ("Plus\n");*/
|
|
||||||
return (Plus);
|
|
||||||
}
|
|
||||||
\<= {
|
|
||||||
/*printf ("_LESym\n");*/
|
|
||||||
return (_LESym);
|
|
||||||
}
|
|
||||||
<DTC_FRM>[xobXOB] {
|
|
||||||
/*printf ("Format\n");*/
|
|
||||||
yylval.immd = yytext[0];
|
|
||||||
return (Format);
|
|
||||||
}
|
|
||||||
\'[01]\' {
|
|
||||||
/*printf ("OneBit BitStringLit\n");*/
|
|
||||||
strcpy (buff,yytext);
|
|
||||||
yylval.text = buff;
|
|
||||||
return (BitStringLit);
|
|
||||||
}
|
|
||||||
[xX]\"[0-9a-fA-F]+\" {
|
|
||||||
/*printf ("Hexa BitStringLit\n");*/
|
|
||||||
strcpy (buff,yytext);
|
|
||||||
yylval.text = buff;
|
|
||||||
return (BitStringLit);
|
|
||||||
}
|
|
||||||
[oO]\"[0-7]+\" {
|
|
||||||
/*printf ("Octal BitStringLit\n");*/
|
|
||||||
strcpy (buff,yytext);
|
|
||||||
yylval.text = buff;
|
|
||||||
return (BitStringLit);
|
|
||||||
}
|
|
||||||
[bB]?\"[01]+\" {
|
|
||||||
/*printf ("Binary BitStringLit\n");*/
|
|
||||||
strcpy (buff,yytext);
|
|
||||||
yylval.text = buff;
|
|
||||||
return (BitStringLit);
|
|
||||||
}
|
|
||||||
<INITIAL,OUT_PAT,DTC_FRM>(0|[1-9][0-9]*) {
|
|
||||||
/*printf ("AbstractLit\n");*/
|
|
||||||
yylval.valu = atoi (yytext);
|
|
||||||
return (AbstractLit);
|
|
||||||
}
|
|
||||||
<INS_PAT>[0-9a-fA-FuU\*\+\-\? \t\n]+ {
|
|
||||||
int i = 0;
|
|
||||||
int j = 0;
|
|
||||||
|
|
||||||
/*printf ("Literal\n");*/
|
|
||||||
while ((buff[j] = yytext[i++]) != '\0')
|
|
||||||
{
|
|
||||||
if ((buff[j] != ' ' ) && (buff[j] != '\t') &&
|
|
||||||
(buff[j] != '\n'))
|
|
||||||
{
|
|
||||||
if ((buff[j] == 'U') || (buff[j] == 'u'))
|
|
||||||
{
|
|
||||||
buff[j] = '*';
|
|
||||||
}
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (buff[j] == '\n')
|
|
||||||
PAT_LINNUM++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
buff[j] = '\0';
|
|
||||||
|
|
||||||
yylval.text = buff;
|
|
||||||
return (Literal);
|
|
||||||
}
|
|
||||||
<INITIAL,OUT_PAT,DTC_FRM>{letter}(_?({letter}|[0-9]))* {
|
|
||||||
int code ;
|
|
||||||
static int lcl_search ();
|
|
||||||
|
|
||||||
yylval.text = namealloc (yytext);
|
|
||||||
if ((code = lcl_search (yylval.text)) == -1)
|
|
||||||
{
|
|
||||||
/*printf ("Identifier : %s\n", yytext);*/
|
|
||||||
BEGIN DTC_FRM;
|
|
||||||
return (Identifier);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/*printf ("KeyWord : %s\n", yytext);*/
|
|
||||||
return (code);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
\#.*$ {
|
|
||||||
yylval.text = namealloc (&yytext[1]);
|
|
||||||
return (Comment);
|
|
||||||
}
|
|
||||||
<INITIAL,OUT_PAT,DTC_FRM>\-\-.*$ {
|
|
||||||
}
|
|
||||||
[ \t] {
|
|
||||||
}
|
|
||||||
\n {
|
|
||||||
PAT_LINNUM++;
|
|
||||||
}
|
|
||||||
. {
|
|
||||||
return (UnknownChar);
|
|
||||||
}
|
|
||||||
%%
|
|
||||||
|
|
||||||
/* ###--------------------------------------------------------------### */
|
|
||||||
/* function : yywrap */
|
|
||||||
/* description : return 1 */
|
|
||||||
/* called func. : none */
|
|
||||||
/* ###--------------------------------------------------------------### */
|
|
||||||
|
|
||||||
int pat_desc_y_wrap ()
|
|
||||||
{
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ###--------------------------------------------------------------### */
|
|
||||||
/* function : lcl_search */
|
|
||||||
/* description : check that an identifier is a reserved word or not */
|
|
||||||
/* called func. : addht, addhtitem, gethtitem, namealloc */
|
|
||||||
/* ###--------------------------------------------------------------### */
|
|
||||||
|
|
||||||
static int lcl_search (key)
|
|
||||||
|
|
||||||
char *key;
|
|
||||||
|
|
||||||
{
|
|
||||||
static ht *pt_hash = NULL;
|
|
||||||
|
|
||||||
if (pt_hash == NULL)
|
|
||||||
{
|
|
||||||
pt_hash = addht (32);
|
|
||||||
|
|
||||||
addhtitem (pt_hash, namealloc ("begin" ), BEGIN_ );
|
|
||||||
addhtitem (pt_hash, namealloc ("downto" ), DOWNTO );
|
|
||||||
addhtitem (pt_hash, namealloc ("end" ), END_ );
|
|
||||||
addhtitem (pt_hash, namealloc ("fs" ), FS );
|
|
||||||
addhtitem (pt_hash, namealloc ("in" ), _IN );
|
|
||||||
addhtitem (pt_hash, namealloc ("inout" ), _INOUT );
|
|
||||||
addhtitem (pt_hash, namealloc ("inspect" ), INSPECT );
|
|
||||||
addhtitem (pt_hash, namealloc ("ms" ), MS );
|
|
||||||
addhtitem (pt_hash, namealloc ("ns" ), NS );
|
|
||||||
addhtitem (pt_hash, namealloc ("ps" ), PS );
|
|
||||||
addhtitem (pt_hash, namealloc ("out" ), _OUT );
|
|
||||||
addhtitem (pt_hash, namealloc ("register"), REGISTER);
|
|
||||||
addhtitem (pt_hash, namealloc ("save" ), SAVE );
|
|
||||||
addhtitem (pt_hash, namealloc ("signal" ), SIGNAL );
|
|
||||||
addhtitem (pt_hash, namealloc ("spy" ), SPY );
|
|
||||||
addhtitem (pt_hash, namealloc ("to" ), TO );
|
|
||||||
addhtitem (pt_hash, namealloc ("trace" ), TRACE );
|
|
||||||
addhtitem (pt_hash, namealloc ("us" ), US );
|
|
||||||
}
|
|
||||||
return (gethtitem (pt_hash, namealloc (key)));
|
|
||||||
}
|
|
Loading…
Reference in New Issue