Macros | Functions | Variables
fevoices.cc File Reference
#include <kernel/mod2.h>
#include <omalloc/omalloc.h>
#include <misc/options.h>
#include <reporter/reporter.h>
#include <kernel/oswrapper/feread.h>
#include <Singular/fevoices.h>
#include <Singular/subexpr.h>
#include <Singular/ipshell.h>
#include <stdlib.h>
#include <stdio.h>
#include <misc/mylimits.h>
#include <stdarg.h>
#include <sys/stat.h>
#include <ctype.h>
#include <unistd.h>

Go to the source code of this file.

Macros

#define fePutChar(c)   fputc((unsigned char)(c),stdout)
 
#define INITIAL_PRINT_BUFFER   24*1024L
 
#define MAX_FILE_BUFFER   4*4096
 
#define STDIN_FILENO   0
 

Functions

const char * VoiceName ()
 
void VoiceBackTrack ()
 
BOOLEAN newFile (char *fname, FILE *f)
 
void newBuffer (char *s, feBufferTypes t, procinfo *pi, int lineno)
 
BOOLEAN exitBuffer (feBufferTypes typ)
 
BOOLEAN contBuffer (feBufferTypes typ)
 
BOOLEAN exitVoice ()
 
static void feShowPrompt (void)
 
static int fePrintEcho (char *anf, char *)
 
int feReadLine (char *b, int l)
 
VoicefeInitStdin (Voice *pp)
 

Variables

char fe_promptstr [] =" "
 
static char * feBuffer =(char *)omAlloc(INITIAL_PRINT_BUFFER)
 
int blocknest
 
int yy_noeof =0
 
int yy_blocklineno
 
VoicecurrentVoice = NULL
 
const char * sNoName_fe ="_"
 

Macro Definition Documentation

#define fePutChar (   c)    fputc((unsigned char)(c),stdout)

Definition at line 32 of file fevoices.cc.

#define INITIAL_PRINT_BUFFER   24*1024L

Definition at line 39 of file fevoices.cc.

#define MAX_FILE_BUFFER   4*4096

Definition at line 43 of file fevoices.cc.

#define STDIN_FILENO   0

Definition at line 633 of file fevoices.cc.

Function Documentation

BOOLEAN contBuffer ( feBufferTypes  typ)

Definition at line 299 of file fevoices.cc.

300 {
301  //printf("contBuffer: %d(%s),(%x)\n",
302  // typ,BT_name[typ], currentVoice);
303  if (typ == BT_break) // valid inside for, while. may skip if, else
304  {
305  // first check for valid buffer type
307  loop
308  {
309  if ((p->typ != BT_if)
310  &&(p->typ != BT_else))
311  {
312  if (p->typ == BT_break /*typ*/)
313  {
314  while (p != currentVoice)
315  {
316  exitVoice();
317  }
319  currentVoice->fptr=0;
320  return FALSE;
321  }
322  else return TRUE;
323  }
324  if (p->prev==NULL) break;
325  p=p->prev;
326  }
327  }
328  return TRUE;
329 }
long fptr
Definition: fevoices.h:69
int yylineno
Definition: febase.cc:45
loop
Definition: myNF.cc:98
#define FALSE
Definition: auxiliary.h:140
return P p
Definition: myNF.cc:203
#define TRUE
Definition: auxiliary.h:144
Definition: fevoices.h:57
int start_lineno
Definition: fevoices.h:71
Definition: fevoices.h:24
BOOLEAN exitVoice()
Definition: fevoices.cc:336
feBufferTypes typ
Definition: fevoices.h:81
Voice * prev
Definition: fevoices.h:61
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:55
BOOLEAN exitBuffer ( feBufferTypes  typ)

Definition at line 231 of file fevoices.cc.

232 {
233  //printf("exitBuffer: %d(%s),(%x)\n",
234  // typ,BT_name[typ], currentVoice);
235  //Voice *p=currentVoice;
236  //Print("-----------------\ncurr:");
237  //do
238  //{
239  //Print("voice fn:%s\n",p->filename);
240  //p=p->prev;
241  //}
242  //while (p!=NULL);
243  //Print("----------------\n");
244  if (typ == BT_break) // valid inside for, while. may skip if, else
245  {
246  /*4 first check for valid buffer type, skip if/else*/
248  loop
249  {
250  if ((p->typ != BT_if)
251  &&(p->typ != BT_else))
252  {
253  if (p->typ == BT_break /*typ*/)
254  {
255  while (p != currentVoice)
256  {
257  exitVoice();
258  }
259  exitVoice();
260  return FALSE;
261  }
262  else return TRUE;
263  }
264  if (p->prev==NULL) break;
265  p=p->prev;
266  }
267  /*4 break not inside a for/while: return an error*/
268  if (/*typ*/ BT_break != currentVoice->typ) return 1;
269  return exitVoice();
270  }
271 
272  if ((typ == BT_proc)
273  || (typ == BT_example))
274  {
275  Voice *p=currentVoice;
276  loop
277  {
278  if ((p->typ == BT_proc)
279  || (p->typ == BT_example))
280  {
281  while (p != currentVoice)
282  {
283  exitVoice();
284  }
285  exitVoice();
286  return FALSE;
287  }
288  if (p->prev==NULL) break;
289  p=p->prev;
290  }
291  }
292  /*4 return not inside a proc: return an error*/
293  return TRUE;
294 }
loop
Definition: myNF.cc:98
#define FALSE
Definition: auxiliary.h:140
return P p
Definition: myNF.cc:203
#define TRUE
Definition: auxiliary.h:144
Definition: fevoices.h:57
Definition: fevoices.h:24
BOOLEAN exitVoice()
Definition: fevoices.cc:336
feBufferTypes typ
Definition: fevoices.h:81
Voice * prev
Definition: fevoices.h:61
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:55
BOOLEAN exitVoice ( )

Definition at line 336 of file fevoices.cc.

337 {
338  //printf("exitVoice: %d(%s),(%x)\n",
339  // currentVoice->typ,BT_name[currentVoice->typ], currentVoice);
340  //{
341  //Voice *p=currentVoice;
342  //Print("-----------------\ncurr:");
343  //do
344  //{
345  //Print("voice fn:%s\n",p->filename);
346  //p=p->prev;
347  //}
348  //while (p!=NULL);
349  //Print("----------------\n");
350  //}
351  if (currentVoice!=NULL)
352  {
353  if (currentVoice->oldb!=NULL)
354  {
357  }
359  {
361  }
362  if (currentVoice->prev!=NULL)
363  {
364  //printf("exitVoice typ %d(%s)\n",
365  // currentVoice->typ,BT_name[currentVoice->typ]);
366  if (currentVoice->typ==BT_if)
367  {
368  currentVoice->prev->ifsw=2;
369  }
370  else
371  {
372  currentVoice->prev->ifsw=0;
373  }
374  if ((currentVoice->sw == BI_file)
375  && (currentVoice->files!=NULL))
376  {
377  fclose(currentVoice->files);
378  }
379  if (currentVoice->filename!=NULL)
380  {
383  }
384  if (currentVoice->buffer!=NULL)
385  {
388  }
391  }
393  delete currentVoice;
394  currentVoice=p;
395  }
396  return currentVoice==NULL;
397 }
int yylineno
Definition: febase.cc:45
char * buffer
Definition: fevoices.h:68
return P p
Definition: myNF.cc:203
char * filename
Definition: fevoices.h:62
void * ADDRESS
Definition: auxiliary.h:161
Definition: fevoices.h:57
Voice * next
Definition: fevoices.h:60
int curr_lineno
Definition: fevoices.h:72
char ifsw
Definition: fevoices.h:76
Definition: fevoices.h:24
Voice * feInitStdin(Voice *pp)
Definition: fevoices.cc:635
#define omFree(addr)
Definition: omAllocDecl.h:261
feBufferTypes typ
Definition: fevoices.h:81
Voice * prev
Definition: fevoices.h:61
void * oldb
Definition: fevoices.h:64
void myyoldbuffer(void *oldb)
Definition: scanner.cc:2326
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:55
FILE * files
Definition: fevoices.h:66
feBufferInputs sw
Definition: fevoices.h:73
Voice* feInitStdin ( Voice pp)

Definition at line 635 of file fevoices.cc.

636 {
637  Voice *p = new Voice;
638  p->files = stdin;
639  p->sw = (isatty(STDIN_FILENO)) ? BI_stdin : BI_file;
640  if ((pp!=NULL) && (pp->files==stdin))
641  {
642  p->files=freopen("/dev/tty","r",stdin);
643  //stdin=p->files;
644  p->sw = BI_stdin;
645  }
646  p->filename = omStrDup("STDIN");
647  p->start_lineno = 1;
650  return p;
651 }
return P p
Definition: myNF.cc:203
char * filename
Definition: fevoices.h:62
Definition: fevoices.h:57
int start_lineno
Definition: fevoices.h:71
#define STDIN_FILENO
Definition: fevoices.cc:633
#define NULL
Definition: omList.c:10
FILE * files
Definition: fevoices.h:66
void omMarkAsStaticAddr(void *addr)
feBufferInputs sw
Definition: fevoices.h:73
#define omStrDup(s)
Definition: omAllocDecl.h:263
static int fePrintEcho ( char *  anf,
char *   
)
static

Definition at line 411 of file fevoices.cc.

412 {
413  char *ss=strrchr(anf,'\n');
414  int len_s;
415  if (ss==NULL)
416  {
417  len_s=strlen(anf);
418  }
419  else
420  {
421  len_s=ss-anf+1;
422  }
423  // my_yylinebuf:
424  int mrc=si_min(len_s,79)-1;
425  strcpy(my_yylinebuf,anf+(len_s-1)-mrc);
426  if (my_yylinebuf[mrc] == '\n') my_yylinebuf[mrc] = '\0';
427  mrc--;
428  // handle echo:
429  if (((si_echo>myynest)
430  && ((currentVoice->typ==BT_proc)
432  || (currentVoice->typ==BT_file)
433  || (currentVoice->typ==BT_none)
434  )
435  && (strncmp(anf,";return();",10)!=0)
436  )
439  {
441  {
442  if (currentVoice->filename==NULL)
443  Print("(none) %3d%c ",yylineno,prompt_char);
444  else
446  }
447  {
448  fwrite(anf,1,len_s,stdout);
449  mflush();
450  }
451  if (traceit&TRACE_SHOW_LINE)
452  {
453  while(fgetc(stdin)!='\n');
454  }
455  }
456  else if (traceit&TRACE_SHOW_LINENO)
457  {
458  Print("{%d}",yylineno);
459  mflush();
460  }
461 #ifdef HAVE_SDB
462  if ((blocknest==0)
463  && (currentVoice->pi!=NULL)
464  && (currentVoice->pi->trace_flag!=0))
465  {
466  sdb(currentVoice, anf, len_s);
467  }
468 #endif
469  prompt_char = '.';
470  return len_s;
471 }
#define TRACE_SHOW_LINENO
Definition: reporter.h:26
int yylineno
Definition: febase.cc:45
#define Print
Definition: emacs.cc:83
static int si_min(const int a, const int b)
Definition: auxiliary.h:167
char * filename
Definition: fevoices.h:62
char prompt_char
Definition: febase.cc:44
int blocknest
Definition: scanner.cc:581
int traceit
Definition: febase.cc:47
void sdb(Voice *currentVoice, const char *currLine, int len)
Definition: sdb.cc:201
#define mflush()
Definition: reporter.h:42
int myynest
Definition: febase.cc:46
char my_yylinebuf[80]
Definition: febase.cc:48
#define TRACE_SHOW_LINE
Definition: reporter.h:27
procinfo * pi
Definition: fevoices.h:63
feBufferTypes typ
Definition: fevoices.h:81
#define TRACE_SHOW_LINE1
Definition: reporter.h:29
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:55
char trace_flag
Definition: subexpr.h:61
int si_echo
Definition: febase.cc:41
int feReadLine ( char *  b,
int  l 
)

Definition at line 473 of file fevoices.cc.

474 {
475  char *s=NULL;
476  int offset = 0; /* will not be used if s==NULL*/
477  // try to read from the buffer into b, max l chars
478  if (currentVoice!=NULL)
479  {
480  if((currentVoice->buffer!=NULL)
481  && (currentVoice->buffer[currentVoice->fptr]!='\0'))
482  {
483  NewBuff:
484  register int i=0;
485  long startfptr=currentVoice->fptr;
486  long tmp_ptr=currentVoice->fptr;
487  l--;
488  loop
489  {
490  register char c=
491  b[i]=currentVoice->buffer[tmp_ptr/*currentVoice->fptr*/];
492  i++;
493  if (yy_noeof==noeof_block)
494  {
495  if (c<' ') yylineno++;
496  else if (c=='}') break;
497  }
498  else
499  {
500  if ((c<' ') ||
501  (c==';') ||
502  (c==')')
503  )
504  break;
505  }
506  if (i>=l) break;
507  tmp_ptr++;/*currentVoice->fptr++;*/
508  if(currentVoice->buffer[tmp_ptr/*currentVoice->fptr*/]=='\0') break;
509  }
510  currentVoice->fptr=tmp_ptr;
511  b[i]='\0';
512  if (currentVoice->sw==BI_buffer)
513  {
514  if (startfptr==0)
515  {
516  char *anf=currentVoice->buffer;
517  const char *ss=strchr(anf,'\n');
518  long len;
519  if (ss==NULL) len=strlen(anf);
520  else len=ss-anf;
521  char *s=(char *)omAlloc(len+2);
522  strncpy(s,anf,len+2);
523  s[len+1]='\0';
524  fePrintEcho(s,b);
525  omFree((ADDRESS)s);
526  }
527  else if (/*(startfptr>0) &&*/
528  (currentVoice->buffer[startfptr-1]=='\n'))
529  {
530  char *anf=currentVoice->buffer+startfptr;
531  const char *ss=strchr(anf,'\n');
532  long len;
533  if (ss==NULL) len=strlen(anf);
534  else len=ss-anf;
535  char *s=(char *)omAlloc(len+2);
536  strncpy(s,anf,len+2);
537  s[len+1]='\0';
538  yylineno++;
539  fePrintEcho(s,b);
540  omFree((ADDRESS)s);
541  }
542  }
543  currentVoice->fptr++;
544  return i;
545  }
546  // no buffer there or e-o-buffer or eoln:
547  if (currentVoice->sw!=BI_buffer)
548  {
549  currentVoice->fptr=0;
550  if (currentVoice->buffer==NULL)
551  {
554  }
555  }
556  offset=0;
557  NewRead:
558  yylineno++;
559  if (currentVoice->sw==BI_stdin)
560  {
561  feShowPrompt();
563  &(currentVoice->buffer[offset]),
564  omSizeOfAddr(currentVoice->buffer)-1-offset);
565  //int i=0;
566  //if (s!=NULL)
567  // while((s[i]!='\0') /*&& (i<MAX_FILE_BUFFER)*/) {s[i] &= (char)127;i++;}
568  }
569  else if (currentVoice->sw==BI_file)
570  {
571  s=fgets(currentVoice->buffer+offset,(MAX_FILE_BUFFER-1-sizeof(ADDRESS))-offset,
573  }
574  //else /* BI_buffer */ s==NULL => return 0
575  // done by the default return
576  }
577  if (s!=NULL)
578  {
579  // handle prot:
580  if (feProt&SI_PROT_I)
581  {
582  fputs(s,feProtFile);
583  }
584  int rc=fePrintEcho(s,b)+1;
585  //s[strlen(s)+1]='\0'; add an second \0 at the end of the string
586  s[rc]='\0';
587  // handel \\ :
588  rc-=3;
589  if ((s[rc]=='\\')&&(currentVoice->sw!=BI_buffer))
590  {
591  s[rc]='\0';
592  offset+=rc;
593  if (offset<(int)omSizeOfAddr(currentVoice->buffer)) goto NewRead;
594  }
595  goto NewBuff;
596  }
597  /* else if (s==NULL) */
598  {
599  const char *err;
600  switch(yy_noeof)
601  {
602  case noeof_brace:
603  case noeof_block:
604  err="{...}";
605  break;
606  case noeof_asstring:
607  err="till `.`";
608  break;
609  case noeof_string:
610  err="string";
611  break;
612  case noeof_bracket:
613  err="(...)";
614  break;
615  case noeof_procname:
616  err="proc";
617  break;
618  case noeof_comment:
619  err="/*...*/";
620  break;
621  default:
622  return 0;
623  }
624  Werror("premature end of file while reading %s",err);
625  return 0;
626  }
627 }
char fe_promptstr[]
Definition: fevoices.cc:36
long fptr
Definition: fevoices.h:69
FILE * feProtFile
Definition: reporter.cc:57
int yy_noeof
Definition: fevoices.cc:53
const CanonicalForm int s
Definition: facAbsFact.cc:55
char *(* fe_fgets_stdin)(const char *pr, char *s, int size)
Definition: feread.cc:33
int yylineno
Definition: febase.cc:45
char * buffer
Definition: fevoices.h:68
static void feShowPrompt(void)
Definition: fevoices.cc:403
loop
Definition: myNF.cc:98
size_t omSizeOfAddr(const void *addr)
Definition: omAllocSystem.c:97
void * ADDRESS
Definition: auxiliary.h:161
#define omAlloc(size)
Definition: omAllocDecl.h:210
int feProt
Definition: reporter.cc:56
#define SI_PROT_I
Definition: reporter.h:37
#define omFree(addr)
Definition: omAllocDecl.h:261
static int fePrintEcho(char *anf, char *)
Definition: fevoices.cc:411
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
#define MAX_FILE_BUFFER
Definition: fevoices.cc:43
Voice * currentVoice
Definition: fevoices.cc:55
FILE * files
Definition: fevoices.h:66
void omMarkAsStaticAddr(void *addr)
feBufferInputs sw
Definition: fevoices.h:73
int offset
Definition: libparse.cc:1091
const poly b
Definition: syzextra.cc:213
void Werror(const char *fmt,...)
Definition: reporter.cc:199
int l
Definition: cfEzgcd.cc:94
static void feShowPrompt ( void  )
static

Definition at line 403 of file fevoices.cc.

404 {
406 }
char fe_promptstr[]
Definition: fevoices.cc:36
char prompt_char
Definition: febase.cc:44
void newBuffer ( char *  s,
feBufferTypes  t,
procinfo pi,
int  lineno 
)

Definition at line 169 of file fevoices.cc.

170 {
171  currentVoice->Next();
172  //Print(":Buffer%d(%s):%s(%x)\n",
173  // t,BT_name[t],pname,currentVoice);
174  if (pi!=NULL)
175  {
176  long l=strlen(pi->procname);
177  if (pi->libname!=NULL) l+=strlen(pi->libname);
178  currentVoice->filename = (char *)omAlloc(l+3);
179  *currentVoice->filename='\0';
180  if (pi->libname!=NULL) strcat(currentVoice->filename,pi->libname);
181  strcat(currentVoice->filename,"::");
182  strcat(currentVoice->filename,pi->procname);
183  currentVoice->pi = pi;
184  }
185  else
186  {
189  }
190  currentVoice->buffer = s;
192  currentVoice->typ = t;
193  switch (t)
194  {
195  case BT_execute:
196  yylineno-=2;
197  break;
198  case BT_proc:
199  case BT_example:
201  yylineno = lineno+1;
202  break;
203  case BT_if:
204  case BT_else:
205  case BT_break:
207  break;
208  //case BT_file:
209  default:
210  yylineno = 1;
211  break;
212  }
213  //Print("start body (%s) at line %d\n",BT_name[t],yylineno);
215  //printf("start buffer typ %d\n",t);
216  //Voice *p=currentVoice;
217  //Print("-----------------\ncurr:");
218  //do
219  //{
220  //Print("voice fn:%s\n",p->filename);
221  //p=p->prev;
222  //}
223  //while (p!=NULL);
224  //Print("----------------\n");
225 }
const CanonicalForm int s
Definition: facAbsFact.cc:55
int yylineno
Definition: febase.cc:45
char * buffer
Definition: fevoices.h:68
void Next()
Definition: fevoices.cc:92
char * filename
Definition: fevoices.h:62
void * myynewbuffer()
Definition: scanner.cc:2319
#define omAlloc(size)
Definition: omAllocDecl.h:210
int start_lineno
Definition: fevoices.h:71
char * procname
Definition: subexpr.h:56
Definition: fevoices.h:24
char * libname
Definition: subexpr.h:55
procinfo * pi
Definition: fevoices.h:63
feBufferTypes typ
Definition: fevoices.h:81
Voice * prev
Definition: fevoices.h:61
#define pi
Definition: libparse.cc:1143
void * oldb
Definition: fevoices.h:64
int yy_blocklineno
Definition: fevoices.cc:54
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:55
feBufferInputs sw
Definition: fevoices.h:73
int l
Definition: cfEzgcd.cc:94
#define omStrDup(s)
Definition: omAllocDecl.h:263
BOOLEAN newFile ( char *  fname,
FILE *  f 
)

Definition at line 127 of file fevoices.cc.

128 {
129  currentVoice->Next();
130  //Print(":File%d(%s):%s(%x)\n",
131  // currentVoice->typ,BT_name[currentVoice->typ],fname,currentVoice);
132  currentVoice->filename = omStrDup(fname);
134  if (strcmp(fname,"STDIN") == 0)
135  {
136  currentVoice->files = stdin;
139  }
140  else
141  {
142  currentVoice->sw = BI_file; /* needed by exitVoice below */
143  if (f!=NULL)
144  currentVoice->files = f;
145  else
146  {
147  currentVoice->files = feFopen(fname,"r",NULL,TRUE);
148  if (currentVoice->files==NULL)
149  {
150  exitVoice();
151  return TRUE;
152  }
153  }
155  }
157  //Voice *p=currentVoice;
158  //Print("-----------------\ncurr:");
159  //do
160  //{
161  //Print("voice fn:%s\n",p->filename);
162  //p=p->prev;
163  //}
164  //while (p!=NULL);
165  //Print("----------------\n");
166  return FALSE;
167 }
int yylineno
Definition: febase.cc:45
void Next()
Definition: fevoices.cc:92
#define FALSE
Definition: auxiliary.h:140
f
Definition: cfModGcd.cc:4022
char * filename
Definition: fevoices.h:62
#define TRUE
Definition: auxiliary.h:144
int start_lineno
Definition: fevoices.h:71
BOOLEAN exitVoice()
Definition: fevoices.cc:336
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
Definition: feFopen.cc:46
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:55
FILE * files
Definition: fevoices.h:66
void omMarkAsStaticAddr(void *addr)
feBufferInputs sw
Definition: fevoices.h:73
#define omStrDup(s)
Definition: omAllocDecl.h:263
void VoiceBackTrack ( )

Definition at line 75 of file fevoices.cc.

76 {
78  while (p->prev!=NULL)
79  {
80  p=p->prev;
81  char *s=p->filename;
82  if (s==NULL)
83  PrintS("-- called from ? --\n");
84  else
85  Print("-- called from %s --\n",s);
86  }
87 }
const CanonicalForm int s
Definition: facAbsFact.cc:55
#define Print
Definition: emacs.cc:83
return P p
Definition: myNF.cc:203
char * filename
Definition: fevoices.h:62
Definition: fevoices.h:57
void PrintS(const char *s)
Definition: reporter.cc:294
Voice * prev
Definition: fevoices.h:61
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:55
const char* VoiceName ( )

Definition at line 64 of file fevoices.cc.

65 {
66  if ((currentVoice!=NULL)
67  && (currentVoice->filename!=NULL))
68  return currentVoice->filename;
69  return sNoName_fe;
70 }
char * filename
Definition: fevoices.h:62
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:55
const char * sNoName_fe
Definition: fevoices.cc:63

Variable Documentation

int blocknest

Definition at line 581 of file scanner.cc.

Voice* currentVoice = NULL

Definition at line 55 of file fevoices.cc.

char fe_promptstr[] =" "

Definition at line 36 of file fevoices.cc.

char* feBuffer =(char *)omAlloc(INITIAL_PRINT_BUFFER)
static

Definition at line 45 of file fevoices.cc.

const char* sNoName_fe ="_"

Definition at line 63 of file fevoices.cc.

int yy_blocklineno

Definition at line 54 of file fevoices.cc.

int yy_noeof =0

Definition at line 53 of file fevoices.cc.