/ Check-in [635f674d]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add some extra debugging logic to lemon.c. Ticket #692. (CVS 1304)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | version_2
Files: files | file ages | folders
SHA1:635f674d20ca3e0b534eba54313004e859de16e9
User & Date: drh 2004-04-23 23:37:56
Context
2004-04-24
12:59
Changes to lemon.c so that it compiles on OpenWatcom 1.3. Ticket #665. (CVS 1307) check-in: b8b8ce5c user: drh tags: version_2
2004-04-23
23:37
Add some extra debugging logic to lemon.c. Ticket #692. (CVS 1304) check-in: 635f674d user: drh tags: version_2
17:04
Get the temp_store and default_temp_store pragmas working. Update the documentation. Also fix a malloc problem that popped up during the regression testing. (CVS 1302) check-in: 7ace5762 user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to tool/lemon.c.

2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892


2893
2894
2895
2896
2897
2898
2899
*/
void emit_destructor_code(out,sp,lemp,lineno)
FILE *out;
struct symbol *sp;
struct lemon *lemp;
int *lineno;
{
 char *cp;

 int linecnt = 0;
 if( sp->type==TERMINAL ){
   cp = lemp->tokendest;
   if( cp==0 ) return;
   fprintf(out,"#line %d \"%s\"\n{",lemp->tokendestln,lemp->filename);
 }else if( sp->destructor ){
   cp = sp->destructor;
   fprintf(out,"#line %d \"%s\"\n{",sp->destructorln,lemp->filename);
 }else if( lemp->vardest ){
   cp = lemp->vardest;
   if( cp==0 ) return;
   fprintf(out,"#line %d \"%s\"\n{",lemp->vardestln,lemp->filename);


 }
 for(; *cp; cp++){
   if( *cp=='$' && cp[1]=='$' ){
     fprintf(out,"(yypminor->yy%d)",sp->dtnum);
     cp++;
     continue;
   }







|













>
>







2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
*/
void emit_destructor_code(out,sp,lemp,lineno)
FILE *out;
struct symbol *sp;
struct lemon *lemp;
int *lineno;
{
 char *cp = 0;

 int linecnt = 0;
 if( sp->type==TERMINAL ){
   cp = lemp->tokendest;
   if( cp==0 ) return;
   fprintf(out,"#line %d \"%s\"\n{",lemp->tokendestln,lemp->filename);
 }else if( sp->destructor ){
   cp = sp->destructor;
   fprintf(out,"#line %d \"%s\"\n{",sp->destructorln,lemp->filename);
 }else if( lemp->vardest ){
   cp = lemp->vardest;
   if( cp==0 ) return;
   fprintf(out,"#line %d \"%s\"\n{",lemp->vardestln,lemp->filename);
 }else{
   assert( 0 );  /* Cannot happen */
 }
 for(; *cp; cp++){
   if( *cp=='$' && cp[1]=='$' ){
     fprintf(out,"(yypminor->yy%d)",sp->dtnum);
     cp++;
     continue;
   }