Subversion Repositories Vertical

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

%{
/*
 * $Header: C:/cvsroot/Vert03/mentor_src/mentor_lex.l,v 1.2 2004/06/22 21:44:12 mjames Exp $ 
 *
 * $Log: mentor_lex.l,v $
 * Revision 1.2  2004/06/22 21:44:12  mjames
 * Firrst build most files
 *
 * Revision 1.3  2002/10/02 19:37:28  MJAMES
 * Moved dummy functions to a separate support file.
 *
 * Used correct number of arguments to define_pin
 *
 * Revision 1.2  2002/09/18 09:18:37  mjames
 * Added dummy function to make code link to create final application
 *
 * Revision 1.1  2002/08/14 12:13:02  mjames
 * Mentor Board Station reader modified to work with latest .nets file format
 *
 * Revision 1.1  2002/04/04 14:53:06  mjames
 * Added mentor board station reader to the portfolio
 *
 * Revision 1.4  2001/12/13 22:21:36  mjames
 * Using #ident with header to identify file
 *
 * Added dummy function to satisfy linker needs for read command
 *
 * Revision 1.3  2001/10/31 22:20:08  mjames
 * Tidying up problematical comments caused by CVS
 * 'intelligent' comment guessing
 *
 * Revision 1.2  2001/06/06 12:10:20  mjames
 * Move from HPUX
 *
 * Revision 1.1  2001/02/12 10:51:29  mjames
 * Inserted new correct version number in vertcl_main.c
 *
 * Added lex files to the list.
 *
 * Revision 1.22  2000/10/04  10:37:07  10:37:07  mjames (Mike James)
 * Part of Release PSAVAT01
 * 
 * Revision 1.21  2000/10/02  11:04:16  11:04:16  mjames (Mike James)
 * new_vhdl
 * 
 * Revision 1.20  2000/09/27  14:42:16  14:42:16  mjames (Mike James)
 * Part of Release Sep_27_ST_2000
 * 
 * Revision 1.19  2000/09/21  10:15:46  10:15:46  mjames (Mike James)
 * Part of Release Sep21Alpha
 * 
 * Revision 1.18  2000/08/25  09:57:13  09:57:13  mjames (Mike James)
 * Part of Release Aug25_alpha
 * 
 * Revision 1.17  2000/08/16  08:57:29  08:57:29  mjames (Mike James)
 * Part of Release CD01_Aug2000
 * 
 * Revision 1.16  2000/08/14  14:45:10  14:45:10  mjames (Mike James)
 * Part of Release Aug_14_2000
 * 
 * Revision 1.15  2000/08/11  08:30:31  08:30:31  mjames (Mike James)
 * Part of Release Aug_11_2000
 * 
 * Revision 1.14  2000/08/09  10:31:45  10:31:45  mjames (Mike James)
 * Part of Release Aug__9_2000
 * 
 * Revision 1.13  2000/05/31  11:42:55  11:42:55  mjames (Mike James)
 * Part of Release May_31_2000
 * 
 * Revision 1.12  2000/05/08  17:01:36  17:01:36  mjames (Mike James)
 * Part of Release May__8_2000
 * 
 * Revision 1.11  2000/05/08  16:59:29  16:59:29  mjames (Mike James)
 * Part of Release May__8_2000
 * 
 * Revision 1.10  2000/05/08  16:57:06  16:57:06  mjames (Mike James)
 * Part of Release May__8_2000
 * 
 * Revision 1.9  2000/03/08  16:19:17  16:19:17  mjames (Mike James)
 * New version including PC
 * 
 * Revision 1.6  2000/01/20  15:58:46  15:58:46  mjames (Mike James)
 * Part of Release R22
 * 
 * Revision 1.5  99/12/22  11:15:26  11:15:26  mjames (Mike James)
 * Part of Release Dec_22_1999
 * 
 * Revision 1.4  99/06/25  14:35:43  14:35:43  mjames (Mike James)
 * Added in reference to expression.h, but no changes made 
 * to the function of acfread yet.
 * 
 * Revision 1.3  98/02/11  11:26:42  11:26:42  mjames (Mike James)
 * Checked in for version 6.2a
 * 
 * Revision 1.2  97/04/23  08:45:04  08:45:04  mjames (Mike James)
 * CHecked in for release rel23041997
 * 
 * Revision 1.1  96/12/13  08:43:24  08:43:24  mjames (Mike James)
 * Initial revision
 * 
 * Revision 1.14  96/07/19  14:38:28  14:38:28  mjames (Mike James)
 * Update to give to PRL
 *
 * Revision 1.13  1996/07/12  15:52:12  mjames
 * Sorted out things like Alias and Jumpers
 * Work Correctly
 * Print COrrectly
 *
 * Revision 1.12  96/06/17  10:52:22  10:52:22  mjames (Mike James)
 * Tidying up
 *
 * Revision 1.11  96/06/04  11:52:43  11:52:43  mjames (Mike James)
 * Slight modifications
 *
 * Revision 1.10  96/04/26  16:03:54  16:03:54  mjames (Mike James)
 *  Set the limit on token length to be consistent with the rest of the code
 *
 * Revision 1.9  96/03/29  14:47:24  14:47:24  mjames (Mike James)
 * Added VHDL netlist writing to the capabilities of ACFREAD
 *
 * Revision 1.8  96/03/18  13:51:30  13:51:30  mjames (Mike James)
 * Real Revision 2.1
 *
 * Revision 1.6  96/02/13  09:13:19  09:13:19  mjames (Mike James)
 * Updated to be version 2.0 with net joining
 *
 * Revision 1.5  96/02/07  16:01:27  16:01:27  mjames (Mike James)
 * Added correct RCS header
 *
 * Revision 1.4  96/02/07  15:50:32  15:50:32  mjames (Mike James)
 * Added RCS ident message
 *
 * Revision 1.3  96/01/10  13:13:24  13:13:24  mjames (Mike James)
 * Works in debug mode with EPLD listings and PCB layout
 *
 * Revision 1.2  96/01/08  15:23:44  15:23:44  mjames (Mike James)
 * Managing to make sense of things now
 *
 * Revision 1.1  96/01/07  12:40:11  Mike_James
 * Initial revision
 *
 * Revision 1.1  96/01/04  17:55:24  17:55:24  mjames (Mike James)
 * Initial revision
 *
 * Revision 1.2  96/01/04  11:37:16  11:37:16  mjames (Mike James)
 * Compete parsing of FIT and ACF with ignore of junk .
 *
 * Revision 1.1  96/01/04  10:18:25  10:18:25  mjames (Mike James)
 * Initial revision
 *
 *  */
#include <stdio.h>
/* see makefile for why */
#if defined HAS_LEX
#include "tcl_l.h"
#endif
#include "mentor_yacc.h"
#include "lx_support.h"
#include "expression.h"
#include "generic.h"
#include "database.h"
#define YYLMAX MAXIDLEN

#ident "@(#)$Header: C:/cvsroot/Vert03/mentor_src/mentor_lex.l,v 1.2 2004/06/22 21:44:12 mjames Exp $"

extern  int yyval;

extern int lineno;
%}

L [A-Za-z0-9_\~]

L2 [A-Za-z0-9_\+\./\~\*\#|\(\)\$\:]

L3 [A-Za-z0-9_\-\+\./\~\*\#|\(\)\$\:]


Ct [ -\~]

Cm [^\n]

D [0-9]
Spc [ \r\t]

S [^\']
Q [\']



%x inquote in2quote escquote esc2quote nettype netquote net2quote

%%
^"#"{Cm}*"\n"     { lineno++; return(NL);/* Single line */  };

"NET_TYPE"        { free_strings(&lx_first,&lx_last); BEGIN(nettype); return (NET_TYPE); };
"NET"             { free_strings(&lx_first,&lx_last);return (NET); };

<net2quote,netquote>"POWERS"      { yylval.string = make_string(yytext,&lx_first,&lx_last);return (POWERS); /* all of these are power supply attributes */ };
<net2quote,netquote>"HI-CURRENT"  { yylval.string = make_string(yytext,&lx_first,&lx_last);return (POWERS); /* all of these are power supply attributes */ };
<net2quote,netquote>"GROUND"      { yylval.string = make_string(yytext,&lx_first,&lx_last);return (POWERS);  /* all of these are power supply attributes */};   
<net2quote,netquote>"SUPPLY"      { yylval.string = make_string(yytext,&lx_first,&lx_last);return (POWERS);  /* all of these are power supply attributes */};   
<net2quote,netquote>"POWER"       { yylval.string = make_string(yytext,&lx_first,&lx_last);return (POWERS);  /* all of these are power supply attributes */};   

<INITIAL>"'/"       { BEGIN(escquote);return (QUOTE);};
<INITIAL>"\"/"      { BEGIN(esc2quote);return (QUOTE);};


<INITIAL>"'"       { BEGIN(inquote);return (QUOTE);};     
<nettype>"'"        { BEGIN(netquote);return (QUOTE);};   

<netquote,escquote,inquote>"'"       { BEGIN(INITIAL) ;return (QUOTE);};

<INITIAL>"\""      { BEGIN(in2quote);return (QUOTE);};     
<nettype>"\""      { BEGIN(net2quote);return (QUOTE);};     

<net2quote,esc2quote,in2quote>"\""     { BEGIN(INITIAL) ;return (QUOTE);};


<INITIAL>{L}+      { yylval.string = make_string(yytext,&lx_first,&lx_last) ; /* do it anyway */
                     return(ASTRING); };

<netquote,net2quote,inquote,in2quote>{L2}({L2})*    { yylval.string = make_string(yytext,&lx_first,&lx_last) ; /* do it anyway */
                     return(ASTRING); };

<escquote,esc2quote>{L3}* { yylval.string = make_string(yytext,&lx_first,&lx_last) ; /* do it anyway */
                     return(ASTRING); };


{Spc}             { break; /* white space */ };

<INITIAL,inquote,in2quote>"-"                { return ('-'); };
"("                { return ('('); };
")"                { return (')'); };
<INITIAL,nettype>","                { return (','); };


"\n"              { lineno++;return(NL); };


$$             { return (ENDFILE); };
%%