Warning: Undefined variable $n in /usr/local/www/websvn.planix.org/include/diff_util.php on line 243

Warning: Undefined variable $n in /usr/local/www/websvn.planix.org/include/diff_util.php on line 247

Warning: Undefined variable $m in /usr/local/www/websvn.planix.org/include/diff_util.php on line 251
WebSVN – tendra.SVN – Diff – /branches/tendra5/src/utilities/sid/rule.h – Rev 5 and 6

Subversion Repositories tendra.SVN

Rev

Rev 5 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5 Rev 6
Line -... Line 1...
-
 
1
/*
-
 
2
 * Copyright (c) 2002-2005 The TenDRA Project <http://www.tendra.org/>.
-
 
3
 * All rights reserved.
-
 
4
 *
-
 
5
 * Redistribution and use in source and binary forms, with or without
-
 
6
 * modification, are permitted provided that the following conditions are met:
-
 
7
 *
-
 
8
 * 1. Redistributions of source code must retain the above copyright notice,
-
 
9
 *    this list of conditions and the following disclaimer.
-
 
10
 * 2. Redistributions in binary form must reproduce the above copyright notice,
-
 
11
 *    this list of conditions and the following disclaimer in the documentation
-
 
12
 *    and/or other materials provided with the distribution.
-
 
13
 * 3. Neither the name of The TenDRA Project nor the names of its contributors
-
 
14
 *    may be used to endorse or promote products derived from this software
-
 
15
 *    without specific, prior written permission.
-
 
16
 *
-
 
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
-
 
18
 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-
 
19
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-
 
20
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-
 
21
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-
 
22
 * EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-
 
23
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-
 
24
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-
 
25
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-
 
26
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-
 
27
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 
28
 *
-
 
29
 * $Id$
-
 
30
 */
1
/*
31
/*
2
    		 Crown Copyright (c) 1997
32
    		 Crown Copyright (c) 1997
3
    
33
 
4
    This TenDRA(r) Computer Program is subject to Copyright
34
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
35
    owned by the United Kingdom Secretary of State for Defence
6
    acting through the Defence Evaluation and Research Agency
36
    acting through the Defence Evaluation and Research Agency
7
    (DERA).  It is made available to Recipients with a
37
    (DERA).  It is made available to Recipients with a
8
    royalty-free licence for its use, reproduction, transfer
38
    royalty-free licence for its use, reproduction, transfer
9
    to other parties and amendment for any purpose not excluding
39
    to other parties and amendment for any purpose not excluding
10
    product development provided that any such use et cetera
40
    product development provided that any such use et cetera
11
    shall be deemed to be acceptance of the following conditions:-
41
    shall be deemed to be acceptance of the following conditions:-
12
    
42
 
13
        (1) Its Recipients shall ensure that this Notice is
43
        (1) Its Recipients shall ensure that this Notice is
14
        reproduced upon any copies or amended versions of it;
44
        reproduced upon any copies or amended versions of it;
15
    
45
 
16
        (2) Any amended version of it shall be clearly marked to
46
        (2) Any amended version of it shall be clearly marked to
17
        show both the nature of and the organisation responsible
47
        show both the nature of and the organisation responsible
18
        for the relevant amendment or amendments;
48
        for the relevant amendment or amendments;
19
    
49
 
20
        (3) Its onward transfer from a recipient to another
50
        (3) Its onward transfer from a recipient to another
21
        party shall be deemed to be that party's acceptance of
51
        party shall be deemed to be that party's acceptance of
22
        these conditions;
52
        these conditions;
23
    
53
 
24
        (4) DERA gives no warranty or assurance as to its
54
        (4) DERA gives no warranty or assurance as to its
25
        quality or suitability for any purpose and DERA accepts
55
        quality or suitability for any purpose and DERA accepts
26
        no liability whatsoever in relation to any use to which
56
        no liability whatsoever in relation to any use to which
27
        it may be put.
57
        it may be put.
28
*/
58
*/
Line 196... Line 226...
196
} ClashListT, *ClashListP;
226
} ClashListT, *ClashListP;
197
 
227
 
198
/*--------------------------------------------------------------------------*/
228
/*--------------------------------------------------------------------------*/
199
 
229
 
200
/* Defined in "rule.c": */
230
/* Defined in "rule.c": */
377
 
321
 
378
extern void			write_rule_lhs
322
extern void		write_rule_lhs(OStreamP, RuleP);
379
	PROTO_S ((OStreamP, RuleP));
-
 
380
extern void			write_rule
323
extern void		write_rule(OStreamP, RuleP);
381
	PROTO_S ((OStreamP, RuleP));
-
 
382
 
324
 
383
extern void			rule_list_init
325
extern void		rule_list_init(RuleListP);
384
	PROTO_S ((RuleListP));
-
 
385
extern void			rule_list_append
-
 
386
	PROTO_S ((RuleListP, RuleP, RuleP *));
326
extern void		rule_list_append (RuleListP, RuleP, RuleP *);
387
extern void			rule_list_terminate
327
extern void		rule_list_terminate(RuleListP);
388
	PROTO_S ((RuleListP));
-
 
389
extern RuleP			rule_list_head
328
extern RuleP		rule_list_head(RuleListP);
390
	PROTO_S ((RuleListP));
-
 
391
 
329
 
392
/* Defined in "rule-check.c": */
330
/* Defined in "rule-check.c": */
393
extern void			rule_check_first_set
331
extern void		rule_check_first_set(EntryP, GenericP);
394
	PROTO_S ((EntryP, GenericP));
-
 
395
extern void			rule_compute_follow_set
332
extern void		rule_compute_follow_set(EntryP, GenericP);
396
	PROTO_S ((EntryP, GenericP));
-
 
397
extern void			rule_compute_see_through_alt
333
extern void		rule_compute_see_through_alt(EntryP, GenericP);
398
	PROTO_S ((EntryP, GenericP));
-
 
399
extern void			rule_compute_alt_first_sets
334
extern void		rule_compute_alt_first_sets(EntryP, GenericP);
400
	PROTO_S ((EntryP, GenericP));
-
 
401
 
335
 
402
extern void			write_clashes
-
 
403
	PROTO_S ((OStreamP, ClashListP));
336
extern void		write_clashes(OStreamP, ClashListP);
404
 
337
 
405
/* Defined in "rule-error.c": */
338
/* Defined in "rule-error.c": */
406
extern void			rule_compute_error_list
339
extern void		rule_compute_error_list(EntryP, GenericP);
407
	PROTO_S ((EntryP, GenericP));
-
 
408
 
340
 
409
/* Defined in "rule-factor.c": */
341
/* Defined in "rule-factor.c": */
410
extern void			rule_factor
342
extern void		rule_factor(EntryP, GenericP);
411
	PROTO_S ((EntryP, GenericP));
-
 
412
extern void			rule_set_factor_limit
343
extern void		rule_set_factor_limit(unsigned);
413
	PROTO_S ((unsigned));
-
 
414
 
344
 
415
/* Defined in "rule-firsts.c": */
345
/* Defined in "rule-firsts.c": */
416
extern void			rule_compute_first_set_1
346
extern void		rule_compute_first_set_1(RuleP);
417
	PROTO_S ((RuleP));
-
 
418
extern void			rule_compute_first_set
347
extern void		rule_compute_first_set(EntryP, GenericP);
419
	PROTO_S ((EntryP, GenericP));
-
 
420
 
348
 
421
/* Defined in "rule-lre.c": */
349
/* Defined in "rule-lre.c": */
422
extern void			rule_remove_left_cycle
350
extern void		rule_remove_left_cycle(RuleP, EntryP, TableP);
423
	PROTO_S ((RuleP, EntryP, TableP));
-
 
424
 
351
 
425
/* Defined in "rule-mutate.c": */
352
/* Defined in "rule-mutate.c": */
426
extern void			rule_compute_mutations
353
extern void		rule_compute_mutations(EntryP, GenericP);
427
	PROTO_S ((EntryP, GenericP));
-
 
428
 
354
 
429
/* Defined in "rule-name.c": */
355
/* Defined in "rule-name.c": */
430
extern void			rule_recompute_alt_names
356
extern void		rule_recompute_alt_names(EntryP, GenericP);
431
	PROTO_S ((EntryP, GenericP));
-
 
432
 
357
 
433
/* Defined in "rule-simp.c": */
358
/* Defined in "rule-simp.c": */
434
extern void			rule_remove_duplicates
359
extern void		rule_remove_duplicates(TableP, EntryP);
435
	PROTO_S ((TableP, EntryP));
-
 
436
 
360
 
437
/* Defined in "rule-tail.c": */
361
/* Defined in "rule-tail.c": */
438
extern void			rule_handle_tails
362
extern void		rule_handle_tails(RuleP);
439
	PROTO_S ((RuleP));
-
 
440
extern void			rule_compute_all_basics
363
extern void		rule_compute_all_basics(EntryP, GenericP);
441
	PROTO_S ((EntryP, GenericP));
-
 
442
extern void			rule_compute_inlining
364
extern void		rule_compute_inlining(EntryP, GenericP);
443
	PROTO_S ((EntryP, GenericP));
-
 
444
extern void			rule_compute_needed_functions
365
extern void		rule_compute_needed_functions(EntryP, GenericP);
445
	PROTO_S ((EntryP, GenericP));
-
 
446
extern void			rule_handle_need_functions
366
extern void		rule_handle_need_functions(RuleP);
447
	PROTO_S ((RuleP));
-
 
448
extern BoolT			rule_get_inline_tail_calls
367
extern BoolT		rule_get_inline_tail_calls(void);
449
	PROTO_S ((void));
-
 
450
extern void			rule_set_inline_tail_calls
368
extern void		rule_set_inline_tail_calls(BoolT);
451
	PROTO_S ((BoolT));
-
 
452
extern void			rule_set_inline_all_basics
369
extern void		rule_set_inline_all_basics(BoolT);
453
	PROTO_S ((BoolT));
-
 
454
extern void			rule_set_inline_singles
370
extern void		rule_set_inline_singles(BoolT);
455
	PROTO_S ((BoolT));
-
 
456
extern void			rule_set_inline_non_tail_calls
371
extern void		rule_set_inline_non_tail_calls(BoolT);
457
	PROTO_S ((BoolT));
-
 
458
extern void			rule_set_multiple_inlining
372
extern void		rule_set_multiple_inlining(BoolT);
459
	PROTO_S ((BoolT));
-
 
460
 
373
 
461
/* Defined in "alt.c": */
374
/* Defined in "alt.c": */
462
extern AltP			alt_create
-
 
463
	PROTO_S ((void));
-
 
464
extern AltP			alt_create_merge
375
extern AltP		alt_create(void);
465
	PROTO_S ((ItemP, ItemP, TypeTransP, TableP));
376
extern AltP		alt_create_merge(ItemP, ItemP, TypeTransP, TableP);
466
extern AltP			alt_duplicate
377
extern AltP		alt_duplicate(AltP);
467
	PROTO_S ((AltP));
-
 
468
extern BoolT			alt_less_than
378
extern BoolT		alt_less_than(AltP, AltP);
469
	PROTO_S ((AltP, AltP));
-
 
470
extern BoolT			alt_equal
379
extern BoolT		alt_equal(AltP, AltP);
471
	PROTO_S ((AltP, AltP));
-
 
472
extern AltP			alt_next
380
extern AltP		alt_next(AltP);
473
	PROTO_S ((AltP));
-
 
474
extern AltP		       *alt_next_ref
381
extern AltP	       *alt_next_ref(AltP);
475
	PROTO_S ((AltP));
-
 
476
extern void			alt_set_next
382
extern void		alt_set_next(AltP, AltP);
477
	PROTO_S ((AltP, AltP));
-
 
478
extern TypeTupleP		alt_names
383
extern TypeTupleP	alt_names(AltP);
479
	PROTO_S ((AltP));
-
 
480
extern BitVecP			alt_first_set
384
extern BitVecP		alt_first_set(AltP);
481
	PROTO_S ((AltP));
-
 
482
extern ItemP			alt_item_head
385
extern ItemP		alt_item_head(AltP);
483
	PROTO_S ((AltP));
-
 
484
extern ItemP			alt_unlink_item_head
386
extern ItemP		alt_unlink_item_head(AltP);
485
	PROTO_S ((AltP));
-
 
486
extern void			alt_add_item
387
extern void		alt_add_item(AltP, ItemP);
487
	PROTO_S ((AltP, ItemP));
-
 
488
extern AltP			alt_deallocate
388
extern AltP		alt_deallocate(AltP);
489
	PROTO_S ((AltP));
-
 
490
 
389
 
491
extern void			write_alt
390
extern void		write_alt(OStreamP, AltP);
492
	PROTO_S ((OStreamP, AltP));
-
 
493
extern void			write_alt_highlighting
391
extern void		write_alt_highlighting(OStreamP, AltP, ItemP);
494
	PROTO_S ((OStreamP, AltP, ItemP));
-
 
495
 
392
 
496
/* Defined in "item.c": */
393
/* Defined in "item.c": */
497
extern ItemP			item_create
394
extern ItemP		item_create(EntryP);
498
	PROTO_S ((EntryP));
-
 
499
extern ItemP			item_duplicate
395
extern ItemP		item_duplicate(ItemP);
500
	PROTO_S ((ItemP));
-
 
501
extern ItemP			item_duplicate_and_translate
396
extern ItemP		item_duplicate_and_translate(ItemP, TypeTransP, TableP);
502
	PROTO_S ((ItemP, TypeTransP, TableP));
-
 
503
extern void			item_translate_list
397
extern void		item_translate_list(ItemP, TypeBTransP);
504
	PROTO_S ((ItemP, TypeBTransP));
-
 
505
extern void			item_to_predicate
398
extern void		item_to_predicate(ItemP);
506
	PROTO_S ((ItemP));
-
 
507
extern ItemP			item_next
399
extern ItemP		item_next (ItemP);
508
	PROTO_S ((ItemP));
-
 
509
extern ItemP		       *item_next_ref
400
extern ItemP	       *item_next_ref(ItemP);
510
	PROTO_S ((ItemP));
-
 
511
extern void			item_set_next
401
extern void		item_set_next(ItemP, ItemP);
512
	PROTO_S ((ItemP, ItemP));
-
 
513
extern EntryP			item_entry
402
extern EntryP		item_entry(ItemP);
514
	PROTO_S ((ItemP));
-
 
515
extern void			item_set_entry
403
extern void		item_set_entry(ItemP, EntryP);
516
	PROTO_S ((ItemP, EntryP));
-
 
517
extern EntryTypeT		item_type
404
extern EntryTypeT	item_type(ItemP);
518
	PROTO_S ((ItemP));
-
 
519
extern BoolT			item_is_rule
405
extern BoolT		item_is_rule(ItemP);
520
	PROTO_S ((ItemP));
-
 
521
extern BoolT			item_is_action
406
extern BoolT		item_is_action(ItemP);
522
	PROTO_S ((ItemP));
-
 
523
extern BoolT			item_is_predicate
407
extern BoolT		item_is_predicate(ItemP);
524
	PROTO_S ((ItemP));
-
 
525
extern BoolT			item_is_basic
408
extern BoolT		item_is_basic(ItemP);
526
	PROTO_S ((ItemP));
-
 
527
extern BoolT			item_is_rename
409
extern BoolT		item_is_rename(ItemP);
528
	PROTO_S ((ItemP));
-
 
529
extern TypeTupleP		item_param
410
extern TypeTupleP	item_param(ItemP);
530
	PROTO_S ((ItemP));
-
 
531
extern void			item_add_param
411
extern void		item_add_param(ItemP, TypeTupleP);
532
	PROTO_S ((ItemP, TypeTupleP));
-
 
533
extern TypeTupleP		item_result
412
extern TypeTupleP	item_result(ItemP);
534
	PROTO_S ((ItemP));
-
 
535
extern void			item_add_result
413
extern void		item_add_result(ItemP, TypeTupleP);
536
	PROTO_S ((ItemP, TypeTupleP));
-
 
537
extern BoolT			item_is_inlinable
414
extern BoolT		item_is_inlinable(ItemP);
538
	PROTO_S ((ItemP));
-
 
539
extern void			item_inlinable
415
extern void		item_inlinable(ItemP);
540
	PROTO_S ((ItemP));
-
 
541
extern BoolT			item_is_tail_call
416
extern BoolT		item_is_tail_call(ItemP);
542
	PROTO_S ((ItemP));
-
 
543
extern void			item_tail_call
417
extern void		item_tail_call(ItemP);
544
	PROTO_S ((ItemP));
-
 
545
extern BoolT			item_names_used_in_list
418
extern BoolT		item_names_used_in_list(ItemP, TypeTupleP);
546
	PROTO_S ((ItemP, TypeTupleP));
-
 
547
extern void			item_compute_minimal_dataflow
419
extern void		item_compute_minimal_dataflow(ItemP, TypeTupleP);
548
	PROTO_S ((ItemP, TypeTupleP));
-
 
549
extern ItemP			item_deallocate
420
extern ItemP		item_deallocate(ItemP);
550
	PROTO_S ((ItemP));
-
 
551
 
421
 
552
extern void			write_item
422
extern void		write_item(OStreamP, ItemP);
553
	PROTO_S ((OStreamP, ItemP));
-
 
554
 
423
 
555
/*--------------------------------------------------------------------------*/
424
/*--------------------------------------------------------------------------*/
556
 
425
 
557
#ifdef FS_FAST
426
#ifdef FS_FAST
558
#define rule_entry(r) ((r)->entry)
427
#define rule_entry(r)			((r)->entry)
559
#define rule_param(r) (&((r)->param))
428
#define rule_param(r)			(&((r)->param))
560
#define rule_result(r) (&((r)->result))
429
#define rule_result(r)			(&((r)->result))
561
#define rule_non_locals(r) (&((r)->non_locals))
430
#define rule_non_locals(r)		(&((r)->non_locals))
562
#define rule_maximum_scope(r) (&((r)->maximum_scope))
431
#define rule_maximum_scope(r)		(&((r)->maximum_scope))
563
#define rule_is_defined(r) ((r)->defined)
432
#define rule_is_defined(r)		((r)->defined)
564
#define rule_defined(r) ((r)->defined = TRUE)
433
#define rule_defined(r)			((r)->defined = TRUE)
565
#define rule_has_empty_alt(r) ((r)->has_empty_alt)
434
#define rule_has_empty_alt(r)		((r)->has_empty_alt)
566
#define rule_add_empty_alt(r) ((r)->has_empty_alt = TRUE)
435
#define rule_add_empty_alt(r)		((r)->has_empty_alt = TRUE)
567
#define rule_is_required(r) ((r)->required)
436
#define rule_is_required(r)		((r)->required)
568
#define rule_required(r) ((r)->required = TRUE)
437
#define rule_required(r)		((r)->required = TRUE)
569
#define rule_reverse_list(r) (&((r)->reverse_list))
438
#define rule_reverse_list(r)		(&((r)->reverse_list))
570
#define rule_set_dfs_state(r, s) ((r)->dfs_state = (s))
439
#define rule_set_dfs_state(r, s)	((r)->dfs_state = (s))
571
#define rule_next_in_root_list(r) ((r)->next_in_root_list)
440
#define rule_next_in_root_list(r)	((r)->next_in_root_list)
572
#define rule_get_next_in_dfs(r) ((r)->next_in_dfs)
441
#define rule_get_next_in_dfs(r)		((r)->next_in_dfs)
573
#define rule_get_next_in_reverse_dfs(r) ((r)->next_in_reverse_dfs)
442
#define rule_get_next_in_reverse_dfs(r)	((r)->next_in_reverse_dfs)
574
#define rule_next_in_reverse_dfs_ref(r) (&((r)->next_in_reverse_dfs))
443
#define rule_next_in_reverse_dfs_ref(r)	(&((r)->next_in_reverse_dfs))
575
#define rule_has_no_cycles(r) ((r)->no_cycles)
444
#define rule_has_no_cycles(r)		((r)->no_cycles)
576
#define rule_no_cycles(r) ((r)->no_cycles = TRUE)
445
#define rule_no_cycles(r)		((r)->no_cycles = TRUE)
577
#define rule_get_cycle_index(r) ((r)->cycle_index)
446
#define rule_get_cycle_index(r)		((r)->cycle_index)
578
#define rule_set_cycle_index(r, i) ((r)->cycle_index = (i))
447
#define rule_set_cycle_index(r, i)	((r)->cycle_index = (i))
579
#define rule_reset_cycle_index(r) ((r)->cycle_index = 0)
448
#define rule_reset_cycle_index(r)	((r)->cycle_index = 0)
580
#define rule_has_computed_first_set(r) ((r)->computed_first_set)
449
#define rule_has_computed_first_set(r)	((r)->computed_first_set)
581
#define rule_computed_first_set(r) ((r)->computed_first_set = TRUE)
450
#define rule_computed_first_set(r)	((r)->computed_first_set = TRUE)
582
#define rule_is_computing_first_set(r) ((r)->computing_first_set)
451
#define rule_is_computing_first_set(r)	((r)->computing_first_set)
583
#define rule_computing_first_set(r) ((r)->computing_first_set = TRUE)
452
#define rule_computing_first_set(r)	((r)->computing_first_set = TRUE)
584
#define rule_first_set(r) (&((r)->first_set))
453
#define rule_first_set(r)		(&((r)->first_set))
585
#define rule_predicate_first(r) (&((r)->predicate_first))
454
#define rule_predicate_first(r)		(&((r)->predicate_first))
586
#define rule_is_see_through(r) ((r)->see_through)
455
#define rule_is_see_through(r)		((r)->see_through)
587
#define rule_see_through(r) ((r)->see_through = TRUE)
456
#define rule_see_through(r)		((r)->see_through = TRUE)
588
#define rule_get_priority(r) ((r)->priority)
457
#define rule_get_priority(r)		((r)->priority)
589
#define rule_set_priority(r, p) ((r)->priority = (p))
458
#define rule_set_priority(r, p)		((r)->priority = (p))
590
#define rule_is_factored(r) ((r)->factored)
459
#define rule_is_factored(r)		((r)->factored)
591
#define rule_factored(r) ((r)->factored = TRUE)
460
#define rule_factored(r)		((r)->factored = TRUE)
592
#define rule_get_tail_group(r) ((r)->tail_group)
461
#define rule_get_tail_group(r)		((r)->tail_group)
593
#define rule_set_tail_group(r1, r2) ((r1)->tail_group = (r2))
462
#define rule_set_tail_group(r1, r2)	((r1)->tail_group = (r2))
594
#define rule_is_being_inlined(r) ((r)->being_inlined)
463
#define rule_is_being_inlined(r)	((r)->being_inlined)
595
#define rule_being_inlined(r) ((r)->being_inlined = TRUE)
464
#define rule_being_inlined(r)		((r)->being_inlined = TRUE)
596
#define rule_is_checked_for_inlining(r) ((r)->checked_for_inlining)
465
#define rule_is_checked_for_inlining(r)	((r)->checked_for_inlining)
597
#define rule_checked_for_inlining(r) ((r)->checked_for_inlining = TRUE)
466
#define rule_checked_for_inlining(r)	((r)->checked_for_inlining = TRUE)
598
#define rule_call_list(r) (&((r)->call_list))
467
#define rule_call_list(r)		(&((r)->call_list))
599
#define rule_get_next_in_table(r) ((r)->next_in_table)
468
#define rule_get_next_in_table(r)	((r)->next_in_table)
600
#define rule_get_next_in_table_ref(r) (&((r)->next_in_table))
469
#define rule_get_next_in_table_ref(r)	(&((r)->next_in_table))
601
#define rule_set_next_in_table(r1, r2) ((r1)->next_in_table = (r2))
470
#define rule_set_next_in_table(r1, r2)	((r1)->next_in_table = (r2))
602
#define rule_follow_set(r) (&((r)->follow_set))
471
#define rule_follow_set(r)		(&((r)->follow_set))
603
#define rule_predicate_follow(r) (&((r)->predicate_follow))
472
#define rule_predicate_follow(r)	(&((r)->predicate_follow))
604
#define rule_has_started_follows(r) ((r)->started_follows)
473
#define rule_has_started_follows(r)	((r)->started_follows)
605
#define rule_started_follows(r) ((r)->started_follows = TRUE)
474
#define rule_started_follows(r)		((r)->started_follows = TRUE)
606
#define rule_set_all_action_alt(r, a) ((r)->all_action_alt = (a))
475
#define rule_set_all_action_alt(r, a)	((r)->all_action_alt = (a))
607
#define rule_all_action_alt(r) ((r)->all_action_alt)
476
#define rule_all_action_alt(r)		((r)->all_action_alt)
608
#define rule_needs_function(r) ((r)->needs_function)
477
#define rule_needs_function(r)		((r)->needs_function)
609
#define rule_will_need_function(r) ((r)->needs_function = TRUE)
478
#define rule_will_need_function(r)	((r)->needs_function = TRUE)
610
#define rule_is_all_basics(r) ((r)->all_basics)
479
#define rule_is_all_basics(r)		((r)->all_basics)
611
#define rule_all_basics(r) ((r)->all_basics = TRUE)
480
#define rule_all_basics(r)		((r)->all_basics = TRUE)
612
#define rule_rstack_state(r) (&((r)->rstack_state))
481
#define rule_rstack_state(r)		(&((r)->rstack_state))
613
#define rule_non_local_state(r) (&((r)->non_local_state))
482
#define rule_non_local_state(r)		(&((r)->non_local_state))
614
#define rule_is_being_output(r) ((r)->being_output)
483
#define rule_is_being_output(r)		((r)->being_output)
615
#define rule_being_output(r) ((r)->being_output = TRUE)
484
#define rule_being_output(r)		((r)->being_output = TRUE)
616
#define rule_not_being_output(r) ((r)->being_output = FALSE)
485
#define rule_not_being_output(r)	((r)->being_output = FALSE)
617
#define rule_get_start_label(r) ((r)->start_label)
486
#define rule_get_start_label(r)		((r)->start_label)
618
#define rule_set_start_label(r, l) ((r)->start_label = (l))
487
#define rule_set_start_label(r, l)	((r)->start_label = (l))
619
#define rule_get_call_count(r) ((r)->call_count)
488
#define rule_get_call_count(r)		((r)->call_count)
620
#define rule_inc_call_count(r) ((r)->call_count ++)
489
#define rule_inc_call_count(r)		((r)->call_count++)
621
#define rule_used_end_label(r) ((r)->used_end_label)
490
#define rule_used_end_label(r)		((r)->used_end_label)
622
#define rule_get_next_label(r) ((r)->next_label)
491
#define rule_get_next_label(r)		((r)->next_label)
623
#define rule_set_next_label(r, l) ((r)->next_label = (l))
492
#define rule_set_next_label(r, l)	((r)->next_label = (l))
624
#define rule_used_handler_label(r) ((r)->used_handler_label)
493
#define rule_used_handler_label(r)	((r)->used_handler_label)
625
#define rule_get_handler(r) ((r)->handler)
494
#define rule_get_handler(r)		((r)->handler)
626
#define rule_set_handler(r, a) ((r)->handler = (a))
495
#define rule_set_handler(r, a)		((r)->handler = (a))
627
#define rule_alt_head(r) ((r)->alt_head)
496
#define rule_alt_head(r)		((r)->alt_head)
628
 
497
 
629
#define rule_list_terminate(r) ((*((r)->tail)) = NIL (RuleP))
498
#define rule_list_terminate(r)		((*((r)->tail)) = NIL(RuleP))
630
#define rule_list_head(r) ((r)->head)
499
#define rule_list_head(r)		((r)->head)
631
 
500
 
632
#define alt_next(a) ((a)->next)
501
#define alt_next(a)			((a)->next)
633
#define alt_next_ref(a) (&((a)->next))
502
#define alt_next_ref(a)			(&((a)->next))
634
#define alt_set_next(a1, a2) ((a1)->next = (a2))
503
#define alt_set_next(a1, a2)		((a1)->next = (a2))
635
#define alt_names(a) (&((a)->names))
504
#define alt_names(a)			(&((a)->names))
636
#define alt_first_set(a) (&((a)->first_set))
505
#define alt_first_set(a)		(&((a)->first_set))
637
#define alt_item_head(a) ((a)->item_head)
506
#define alt_item_head(a)		((a)->item_head)
638
 
507
 
639
#define item_next(i) ((i)->next)
508
#define item_next(i)			((i)->next)
640
#define item_next_ref(i) (&((i)->next))
509
#define item_next_ref(i)		(&((i)->next))
641
#define item_set_next(i1, i2) ((i1)->next = (i2))
510
#define item_set_next(i1, i2)		((i1)->next = (i2))
642
#define item_entry(i) ((i)->entry)
511
#define item_entry(i)			((i)->entry)
643
#define item_set_entry(i, e) ((i)->entry = (e))
512
#define item_set_entry(i, e)		((i)->entry = (e))
644
#define item_type(i) ((i)->type)
513
#define item_type(i)			((i)->type)
645
#define item_is_rule(i) ((i)->type == ET_RULE)
514
#define item_is_rule(i)			((i)->type == ET_RULE)
646
#define item_is_action(i) ((i)->type == ET_ACTION)
515
#define item_is_action(i)		((i)->type == ET_ACTION)
647
#define item_is_predicate(i) ((i)->type == ET_PREDICATE)
516
#define item_is_predicate(i)		((i)->type == ET_PREDICATE)
648
#define item_is_basic(i) ((i)->type == ET_BASIC)
517
#define item_is_basic(i)		((i)->type == ET_BASIC)
649
#define item_is_rename(i) ((i)->type == ET_RENAME)
518
#define item_is_rename(i)		((i)->type == ET_RENAME)
650
#define item_param(i) (&((i)->param))
519
#define item_param(i)			(&((i)->param))
651
#define item_add_param(i, t) (types_assign (&((i)->param), (t)))
520
#define item_add_param(i, t)		(types_assign(&((i)->param), (t)))
652
#define item_result(i) (&((i)->result))
521
#define item_result(i)			(&((i)->result))
653
#define item_add_result(i, t) (types_assign (&((i)->result), (t)))
522
#define item_add_result(i, t)		(types_assign(&((i)->result), (t)))
654
#define item_is_inlinable(i) ((i)->inlinable)
523
#define item_is_inlinable(i)		((i)->inlinable)
655
#define item_inlinable(i) ((i)->inlinable = TRUE)
524
#define item_inlinable(i)		((i)->inlinable = TRUE)
656
#define item_is_tail_call(i) ((i)->tail_call)
525
#define item_is_tail_call(i)		((i)->tail_call)
657
#define item_tail_call(i) ((i)->tail_call = TRUE)
526
#define item_tail_call(i)		((i)->tail_call = TRUE)
658
#endif /* defined (FS_FAST) */
527
#endif /* defined (FS_FAST) */
659
 
528
 
660
#endif /* !defined (H_RULE) */
529
#endif /* !defined (H_RULE) */
661

530

662
/*
531
/*