Diff of /c2iec.y [7e489a] .. [f15b2a]  Maximize  Restore

Switch to unified view

a/c2iec.y b/c2iec.y
...
...
373
    | UNION
373
    | UNION
374
    ;
374
    ;
375
375
376
struct_declaration_list
376
struct_declaration_list
377
    : struct_declaration
377
    : struct_declaration
378
    {
379
        sprintf($<str>$, "%s",maptype($<str>1));
380
    }
378
    | struct_declaration_list struct_declaration
381
    | struct_declaration_list struct_declaration
379
    { sprintf($<str>$, "%s %s",$<str>1, $<str>2); }
382
    { sprintf($<str>$, "%s %s",$<str>1, $<str>2); }
380
    ;
383
    ;
381
384
382
struct_declaration
385
struct_declaration
...
...
400
    : TYPEDEF type_specifier specifier_qualifier_list
403
    : TYPEDEF type_specifier specifier_qualifier_list
401
    { sprintf($<str>$, "lexxer hack - typedef found\n"); }
404
    { sprintf($<str>$, "lexxer hack - typedef found\n"); }
402
405
403
specifier_qualifier_list
406
specifier_qualifier_list
404
    : type_specifier specifier_qualifier_list
407
    : type_specifier specifier_qualifier_list
405
    { sprintf($<str>$, "%s %s",$<str>1, $<str>2); }
408
    {
409
        sprintf($<str>$, "%s %s", $<str>1, $<str>2);
410
        sprintf($<str>$, "%s",maptype($<str>$));
411
    }
406
    | type_specifier
412
    | type_specifier
407
    {
413
    {
408
        strcpy($<str>$, maptype($<str>1));
414
        strcpy($<str>$, maptype($<str>1));
409
    }
415
    }
410
    | type_qualifier specifier_qualifier_list
416
    | type_qualifier specifier_qualifier_list
...
...
470
    }
476
    }
471
    ;
477
    ;
472
478
473
direct_declarator
479
direct_declarator
474
    : IDENTIFIER
480
    : IDENTIFIER
475
//  { sprintf($<str>$, "%s: %%s;\n",$<str>1); fifo_push($<str>$);}
481
    | '(' declarator ')'
476
    | '(' declarator ')'
482
    { printf ("not supported direct_declerator\n"); }
477
    | direct_declarator '[' type_qualifier_list assignment_expression ']'
483
    | direct_declarator '[' type_qualifier_list assignment_expression ']'
478
    | direct_declarator '[' type_qualifier_list ']'
484
    { printf ("not supported direct_declerator\n"); }
485
    | direct_declarator '[' type_qualifier_list ']'
486
    { printf ("not supported direct_declerator\n"); }
479
    | direct_declarator '[' assignment_expression ']'
487
    | direct_declarator '[' assignment_expression ']'
480
    {
488
    {
481
        if (strlen($<str>1) > 0)
489
        if (strlen($<str>1) > 0)
482
        {
490
        {
483
            sprintf($<str>$, "%s: ARRAY[0..(%s-1)] OF %%s;\n",$<str>1, $<str>3);
491
            sprintf($<str>$, "%s: ARRAY[0..(%s-1)] OF %%s;\n",$<str>1, $<str>3);
...
...
487
            char *p;
495
            char *p;
488
            p = lifo_pop(decl_all);
496
            p = lifo_pop(decl_all);
489
            sprintf($<str>1, ",0..(%s-1)] OF %%s;\n",$<str>3);
497
            sprintf($<str>1, ",0..(%s-1)] OF %%s;\n",$<str>3);
490
            strcpy($<str>$, p);
498
            strcpy($<str>$, p);
491
            strcpy(strchr($<str>$, ']'), $<str>1);
499
            strcpy(strchr($<str>$, ']'), $<str>1);
492
//          sprintf($<str>$, p, $<str>1);
493
        }
500
        }
494
        fifo_push(decl_all, $<str>$);
501
        fifo_push(decl_all, $<str>$);
495
        strcpy($<str>$, "");
502
        strcpy($<str>$, "");
496
    }
503
    }
497
    | direct_declarator '[' STATIC type_qualifier_list assignment_expression ']'
504
    | direct_declarator '[' STATIC type_qualifier_list assignment_expression ']'