Et hop j'enleve le haut !

This commit is contained in:
Ludovic Jacomme 2002-04-11 15:56:17 +00:00
parent feac8a1c76
commit 07b7fa587a
1 changed files with 0 additions and 252 deletions

View File

@ -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)));
}