~npalix/coccinelle/upstream

« back to all changes in this revision

Viewing changes to parsing_c/pretty_print_c.ml

  • Committer: Julia Lawall
  • Date: 2018-10-10 11:40:18 UTC
  • mfrom: (4653.1.32)
  • mto: (4653.3.2) (4666.1.2)
  • mto: This revision was merged to the branch mainline in revision 4660.
  • Revision ID: git-v1:90f6f8f0ef7f8f5ca70a7374643e1d8215513fa8
Merge branch 'master' of git+ssh://scm.gforge.inria.fr/gitroot/coccinelle/coccinelle

Show diffs side-by-side

added added

removed removed

Lines of Context:
1313
1313
 
1314
1314
  let pp_flow n =
1315
1315
    match F.unwrap n  with
1316
 
    | F.FunHeader ({f_name =idb;
1317
 
                     f_type = (rett, (paramst,(isvaargs,iidotsb)));
1318
 
                     f_storage = stob;
1319
 
                     f_body = body;
1320
 
                     f_attr = attrs},ii) ->
1321
 
 
1322
 
                       assert (body = []);
1323
 
      (*
1324
 
         iif ii;
1325
 
         iif iidotsb;
1326
 
         attrs +> List.iter (vk_attribute bigf);
1327
 
         vk_type bigf rett;
1328
 
         paramst +> List.iter (fun (param, iicomma) ->
1329
 
         vk_param bigf param;
1330
 
         iif iicomma;
1331
 
         );
1332
 
      *)
1333
 
                       pr2 "FunHeader";
1334
 
 
1335
 
 
1336
 
    | F.Decl decl ->
1337
 
        (* vk_decl bigf decl *)
1338
 
        pr2 "Decl"
 
1316
    | F.FunHeader (({f_name =idb;
 
1317
                      f_type = (rett, (paramst,(isvaargs,iidotsb)));
 
1318
                      f_storage = stob;
 
1319
                      f_body = body;
 
1320
                      f_attr = attrs},ii) as def) ->
 
1321
 
 
1322
                        assert (body = []);
 
1323
                        pp_def def
 
1324
 
 
1325
 
 
1326
    | F.Decl decl -> pp_decl decl
1339
1327
 
1340
1328
    | F.ExprStatement (st, (eopt, ii)) ->
1341
1329
        pp_statement (Ast_c.mk_st (ExprStatement eopt) ii)
1342
1330
 
1343
 
    | F.IfHeader (_, (e,ii)) -> pr2 "IfHeader"
1344
 
    | F.SwitchHeader (_, (e,ii)) -> pr2 "SwitchHeader"
1345
 
    | F.WhileHeader (_, (e,ii)) -> pr2 "WhileHeader"
 
1331
    | F.IfHeader (_, (e,ii)) ->
 
1332
        let (i1,i2,i3) = tuple_of_list3 ii in
 
1333
        pr_elem i1; pr_space(); pr_elem i2; pp_expression e; pr_elem i3
 
1334
    | F.SwitchHeader (_, (e,ii)) ->
 
1335
        let (i1,i2,i3) = tuple_of_list3 ii in
 
1336
        pr_elem i1; pr_space(); pr_elem i2; pp_expression e; pr_elem i3
 
1337
    | F.WhileHeader (_, (e,ii)) ->
 
1338
        let (i1,i2,i3) = tuple_of_list3 ii in
 
1339
        pr_elem i1; pr_space(); pr_elem i2; pp_expression e; pr_elem i3
1346
1340
    | F.DoWhileTail (e,ii) ->
1347
 
        (*
1348
 
           iif ii;
1349
 
           vk_expr bigf e
1350
 
        *)
1351
 
        pr2 "DoWhileTail"
1352
 
 
1353
 
 
1354
 
    | F.ForHeader (_st, ((first, (e2opt,i2), (e3opt,i3)), ii)) ->
1355
 
        (*
1356
 
           iif i1; iif i2; iif i3;
1357
 
           iif ii;
1358
 
           e1opt +> do_option (vk_expr bigf);
1359
 
           e2opt +> do_option (vk_expr bigf);
1360
 
           e3opt +> do_option (vk_expr bigf);
1361
 
        *)
1362
 
        pr2 "ForHeader"
 
1341
        let (i1,i2,i3,i4) = tuple_of_list4 ii in
 
1342
        pr_elem i1; pr_elem i2; pp_expression e;
 
1343
        pr_elem i3; pr_elem i4
 
1344
 
 
1345
 
 
1346
    | F.ForHeader (_st, ((first, (e2opt,il2), (e3opt,il3)), ii)) ->
 
1347
        let (i1,i2,i3) = tuple_of_list3 ii in
 
1348
        pr_elem i1; pr_space();
 
1349
        pr_elem i2;
 
1350
        (match first with
 
1351
          ForExp (e1opt,il1) ->
 
1352
            pp_statement (Ast_c.mk_st (ExprStatement e1opt) il1)
 
1353
        | ForDecl decl -> pp_decl decl);
 
1354
        pr_space();
 
1355
        pp_statement (Ast_c.mk_st (ExprStatement e2opt) il2);
 
1356
        assert (il3 = []);
 
1357
        pr_space();
 
1358
        pp_statement (Ast_c.mk_st (ExprStatement e3opt) il3);
 
1359
        pr_elem i3
1363
1360
 
1364
1361
    | F.MacroIterHeader (_s, ((s,es), ii)) ->
1365
 
        (*
1366
 
           iif ii;
1367
 
           vk_argument_list bigf es;
1368
 
        *)
1369
 
        pr2 "MacroIterHeader"
1370
 
 
 
1362
        let (i1,i2,i3) = tuple_of_list3 ii in
 
1363
        pr_elem i1; pr_space();
 
1364
        pr_elem i2;
 
1365
 
 
1366
        es +> List.iter (fun (e, opt) ->
 
1367
          assert (List.length opt <= 1);
 
1368
          opt +> List.iter pr_elem;
 
1369
          pp_argument e;
 
1370
          );
 
1371
 
 
1372
        pr_elem i3
1371
1373
 
1372
1374
    | F.ReturnExpr (_st, (e,ii)) ->
1373
 
        (* iif ii; vk_expr bigf e*)
1374
 
        pr2 "ReturnExpr"
1375
 
 
1376
 
 
1377
 
    | F.Case  (_st, (e,ii)) ->
1378
 
      (* iif ii; vk_expr bigf e *)
1379
 
        pr2 "Case"
 
1375
        let (i1,i2) = tuple_of_list2 ii in
 
1376
        pr_elem i1; pr_space(); pp_expression e; pr_elem i2
 
1377
 
 
1378
    | F.Case (_st, (e,ii)) ->
 
1379
        let (i1,i2) = tuple_of_list2 ii in
 
1380
        pr_elem i1; pr_space(); pp_expression e; pr_elem i2
1380
1381
 
1381
1382
    | F.CaseRange (_st, ((e1, e2),ii)) ->
1382
 
        (* iif ii; vk_expr bigf e1; vk_expr bigf e2 *)
1383
 
        pr2 "CaseRange"
1384
 
 
1385
 
 
 
1383
        let (i1,i2,i3) = tuple_of_list3 ii in
 
1384
        pr_elem i1; pr_space(); pp_expression e1; pr_elem i2;
 
1385
        pp_expression e2; pr_elem i3
1386
1386
 
1387
1387
    | F.CaseNode i -> ()
1388
1388
 
1389
 
    | F.DefineExpr e  ->
1390
 
        (* vk_expr bigf e *)
1391
 
        pr2 "DefineExpr"
 
1389
    | F.DefineExpr e  -> pp_expression e
1392
1390
 
1393
 
    | F.DefineType ft  ->
1394
 
        (* vk_type bigf ft *)
1395
 
        pr2 "DefineType"
 
1391
    | F.DefineType ft  -> pp_type ft
1396
1392
 
1397
1393
    | F.DefineHeader ((s,ii), (defkind))  ->
1398
 
        (*
1399
 
           iif ii;
1400
 
           vk_define_kind bigf defkind;
1401
 
        *)
1402
 
        pr2 "DefineHeader"
1403
 
 
 
1394
        let (idefine,iident,ieol) = Common.tuple_of_list3 ii in
 
1395
        pr_elem idefine; pr_space();
 
1396
        pr_elem iident; pr_space();
 
1397
        (match defkind with
 
1398
        | DefineVar | Undef -> ()
 
1399
        | DefineFunc (params, ii) ->
 
1400
            let (i1,i2) = tuple_of_list2 ii in
 
1401
            pr_elem i1;
 
1402
            pp_define_param_list params;
 
1403
            pr_elem i2)
1404
1404
 
1405
1405
    | F.DefineDoWhileZeroHeader (((),ii)) ->
 
1406
        (* not sure what it is, ignore *)
1406
1407
        (* iif ii *)
1407
1408
        pr2 "DefineDoWhileZeroHeader"
1408
1409
 
1412
1413
        pr_elem iident;
1413
1414
        pp_pragmainfo pragmainfo
1414
1415
 
1415
 
    | F.Include {i_include = (s, ii);} ->
1416
 
        (* iif ii; *)
1417
 
        pr2 "Include"
1418
 
 
 
1416
    | F.Include ({i_include = (s, ii);} as a) ->
 
1417
        pp_directive (Include a)
1419
1418
 
1420
1419
    | F.MacroTop (s, args, ii) ->
1421
 
        (* iif ii;
1422
 
           vk_argument_list bigf args *)
1423
 
        pr2 "MacroTop"
1424
 
 
 
1420
        pp_toplevel(MacroTop (s, args, ii))
1425
1421
 
1426
1422
    | F.Break    (st,((),ii),fromswitch) ->
1427
 
        (* iif ii *)
1428
 
        pr2 "Break"
 
1423
        let (i1,i2) = tuple_of_list2 ii in
 
1424
        pr_elem i1; pr_elem i2
1429
1425
    | F.Continue (st,((),ii)) ->
1430
 
        (* iif ii *)
1431
 
        pr2 "Continue"
 
1426
        let (i1,i2) = tuple_of_list2 ii in
 
1427
        pr_elem i1; pr_elem i2
1432
1428
    | F.Default  (st,((),ii)) ->
1433
 
        (* iif ii *)
1434
 
        pr2 "Default"
 
1429
        let (i1,i2) = tuple_of_list2 ii in
 
1430
        pr_elem i1; pr_elem i2
1435
1431
    | F.Return   (st,((),ii)) ->
1436
 
        (* iif ii *)
1437
 
        pr2 "Return"
 
1432
        let (i1,i2) = tuple_of_list2 ii in
 
1433
        pr_elem i1; pr_elem i2
1438
1434
    | F.Goto  (st, name, ((),ii)) ->
1439
 
        (* iif ii *)
1440
 
        pr2 "Goto"
 
1435
        let (i1, i3) = Common.tuple_of_list2 ii in
 
1436
        pr_elem i1; pr_space(); pp_name name; pr_elem i3
1441
1437
    | F.Label (st, name, ((),ii)) ->
1442
 
        (* iif ii *)
1443
 
        pr2 "Label"
 
1438
        let (i2) = Common.tuple_of_list1 ii in
 
1439
        pp_name name; pr_elem i2
1444
1440
    | F.EndStatement iopt ->
1445
1441
        (* do_option infof iopt *)
1446
1442
        pr2 "EndStatement"
1447
1443
    | F.DoHeader (st, info) ->
1448
 
        (* infof info *)
1449
 
        pr2 "DoHeader"
 
1444
        pr_elem info
1450
1445
    | F.Else info ->
1451
 
        (* infof info *)
1452
 
        pr2 "Else"
 
1446
        pr_elem info
1453
1447
    | F.SeqEnd (i, info) ->
1454
 
        (* infof info *)
1455
 
        pr2 "SeqEnd"
 
1448
        pr_elem info
1456
1449
    | F.SeqStart (st, i, info) ->
1457
 
        (* infof info *)
1458
 
        pr2 "SeqStart"
 
1450
        pr_elem info
1459
1451
 
1460
1452
    | F.MacroStmt (st, ((),ii)) ->
1461
 
        (* iif ii *)
1462
 
        pr2 "MacroStmt"
 
1453
        pp_statement (MacroStmt,ii)
1463
1454
    | F.Asm (st, (asmbody,ii)) ->
1464
 
        (*
1465
 
           iif ii;
1466
 
           vk_asmbody bigf asmbody
1467
 
        *)
1468
 
        pr2 "Asm"
 
1455
        pp_statement (Asm asmbody, ii)
1469
1456
 
1470
 
    | F.Exec(st,(code,ii)) -> pr2 "Exec"
 
1457
    | F.Exec(st,(code,ii)) ->
 
1458
        pp_statement (Exec code, ii)
1471
1459
 
1472
1460
    | F.IfdefHeader (info) ->
1473
1461
        pp_ifdef info