Browse Source

improved numparam error message

pre-master-46
h_vogt 16 years ago
parent
commit
f1a4f27d21
  1. 2
      src/frontend/measure.c
  2. 2
      src/frontend/numparam/numpaif.h
  3. 1
      src/frontend/numparam/numparam.h
  4. 7
      src/frontend/numparam/spicenum.c
  5. 7
      src/frontend/numparam/xpressn.c
  6. 5
      src/frontend/subckt.c

2
src/frontend/measure.c

@ -343,7 +343,7 @@ do_measure(
if ( just_chk_meas != TRUE ) fprintf( stdout, "%-20s=", resname ); if ( just_chk_meas != TRUE ) fprintf( stdout, "%-20s=", resname );
if ( just_chk_meas != TRUE ) { if ( just_chk_meas != TRUE ) {
ok = nupa_eval( meas_card->li_line, meas_card->li_linenum );
ok = nupa_eval( meas_card->li_line, meas_card->li_linenum, meas_card->li_linenum_orig );
if ( ok ) { if ( ok ) {
str_ptr = strstr( meas_card->li_line, meastype ); str_ptr = strstr( meas_card->li_line, meastype );

2
src/frontend/numparam/numpaif.h

@ -13,7 +13,7 @@
#define NUPAEVALDONE 3 #define NUPAEVALDONE 3
extern char * nupa_copy(char *s, int linenum); extern char * nupa_copy(char *s, int linenum);
extern int nupa_eval(char *s, int linenum);
extern int nupa_eval(char *s, int linenum, int orig_linenum);
extern int nupa_signal(int sig, char *info); extern int nupa_signal(int sig, char *info);
extern void nupa_scan(char * s, int linenum, int is_subckt); extern void nupa_scan(char * s, int linenum, int is_subckt);
extern void nupa_list_params(); extern void nupa_list_params();

1
src/frontend/numparam/numparam.h

@ -53,6 +53,7 @@ typedef struct _ttdico {
/* the input scanner data structure */ /* the input scanner data structure */
str80 srcfile; /* last piece of source file name */ str80 srcfile; /* last piece of source file name */
int srcline; int srcline;
int oldline;
int errcount; int errcount;
// entry dat[Maxdico+1]; // entry dat[Maxdico+1];
entry* dyndat; entry* dyndat;

7
src/frontend/numparam/spicenum.c

@ -680,7 +680,7 @@ nupa_copy (char *s, int linenum)
} }
int int
nupa_eval (char *s, int linenum)
nupa_eval (char *s, int linenum, int orig_linenum)
/* s points to a partially transformed line. /* s points to a partially transformed line.
compute variables if linenum points to a & or .param line. compute variables if linenum points to a & or .param line.
if ( the original is an X line, compute actual params.; if ( the original is an X line, compute actual params.;
@ -695,14 +695,17 @@ nupa_eval (char *s, int linenum)
unsigned char err = 1; unsigned char err = 1;
dico->srcline = linenum; dico->srcline = linenum;
dico->oldline = orig_linenum;
c = dico->dyncategory[linenum]; c = dico->dyncategory[linenum];
#ifdef TRACE_NUMPARAMS #ifdef TRACE_NUMPARAMS
fprintf (stderr, "** SJB - in nupa_eval()\n"); fprintf (stderr, "** SJB - in nupa_eval()\n");
fprintf (stderr, "** SJB - processing line %3d: %s\n", linenum, s); fprintf (stderr, "** SJB - processing line %3d: %s\n", linenum, s);
fprintf (stderr, "** SJB - category '%c'\n", c); fprintf (stderr, "** SJB - category '%c'\n", c);
#endif /* TRACE_NUMPARAMS */ #endif /* TRACE_NUMPARAMS */
if (c == 'P') /* evaluate parameters */
if (c == 'P') { /* evaluate parameters */
// err = nupa_substitute (dico, dico->dynrefptr[linenum], s, 0);
nupa_assignment (dico, dico->dynrefptr[linenum], 'N'); nupa_assignment (dico, dico->dynrefptr[linenum], 'N');
}
else if (c == 'B') /* substitute braces line */ else if (c == 'B') /* substitute braces line */
err = nupa_substitute (dico, dico->dynrefptr[linenum], s, 0); err = nupa_substitute (dico, dico->dynrefptr[linenum], s, 0);
else if (c == 'X') else if (c == 'X')

7
src/frontend/numparam/xpressn.c

@ -60,7 +60,7 @@ initkeys (void)
"and or not div mod if else end while macro funct defined" "and or not div mod if else end while macro funct defined"
" include for to downto is var"); " include for to downto is var");
scopy_up (fmath, scopy_up (fmath,
"sqr sqrt sin cos exp ln arctan abs pow pwr max min int log sinh cosh tanh ternary_fcn agauss");
"sqr sqrt sin cos exp ln arctan abs pow pwr max min int log sinh cosh tanh ternary_fcn v agauss");
} }
static double static double
@ -140,8 +140,11 @@ message (tdico * dic, char *s)
} }
if (dic->srcline >= 0) if (dic->srcline >= 0)
{ {
sadd (t, "Original line no.: ");
nadd (t, dic->oldline);
sadd (t, ", new internal line no.: ");
nadd (t, dic->srcline); nadd (t, dic->srcline);
sadd (t, ": ");
sadd (t, ":\n");
} }
sadd (t, s); sadd (t, s);
cadd (t, '\n'); cadd (t, '\n');

5
src/frontend/subckt.c

@ -348,10 +348,9 @@ inp_subcktexpand(struct line *deck)
/* 'param' .meas statements can have dependencies on measurement values */ /* 'param' .meas statements can have dependencies on measurement values */
/* need to skip evaluating here and evaluate after other .meas statements */ /* need to skip evaluating here and evaluate after other .meas statements */
if ( ciprefix( ".meas", c->li_line ) ) { if ( ciprefix( ".meas", c->li_line ) ) {
if ( !strstr( c->li_line, "param" ) ) nupa_eval( c->li_line, c->li_linenum);
if ( !strstr( c->li_line, "param" ) ) nupa_eval( c->li_line, c->li_linenum, c->li_linenum_orig);
} else { } else {
/*ok = ok && nupa_eval( c->li_line, c->li_linenum);*/
nupa_eval( c->li_line, c->li_linenum);
nupa_eval( c->li_line, c->li_linenum, c->li_linenum_orig);
} }
c= c->li_next; c= c->li_next;
} }

Loading…
Cancel
Save