-
Notifications
You must be signed in to change notification settings - Fork 0
/
trans_model.ads
4422 lines (4025 loc) · 222 KB
/
trans_model.ads
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
-- Automatically generated AdaGOOP output
-- (by Martin C. Carlisle)
-- If you modify, be careful about losing your work!
with trans;
with lego_builtins;
with ada.strings.unbounded; use ada.strings.unbounded;
package trans_Model is
type Decl_Search_Result_Type is (Not_Found_In_Decls, Found_In_Decls, Added_To_Decls, Decls_Are_Empty);
type String_Ptr is access all String;
type Parseable is abstract tagged null record;
procedure Translate(This : in out Parseable) is abstract;
type Parseable_Ptr is access all Parseable'Class;
type Parseable_Token is new Parseable with record
Line : Natural;
Column : Natural;
Token_String : String_Ptr;
Token_Type : trans.Token;
end record;
procedure Check_For_Supported_Package(This : in Parseable_Token);
procedure Get_LC(This : in Parseable_Token; Line, Column : out integer);
procedure Set_Input_Filename(Name : in Unbounded_String);
procedure Translate(This : in out Parseable_Token);
type Parseable_Token_Ptr is access all Parseable_Token'Class;
Parse_Error_Exception : exception; --raised if there's a translation error, handled in main program
type code_stmt_nonterminal;
type code_stmt_nonterminal_ptr is access all code_stmt_nonterminal'Class;
type address_spec_nonterminal;
type address_spec_nonterminal_ptr is access all address_spec_nonterminal'Class;
type comp_loc_s_nonterminal;
type comp_loc_s_nonterminal_ptr is access all comp_loc_s_nonterminal'Class;
type align_opt_nonterminal;
type align_opt_nonterminal_ptr is access all align_opt_nonterminal'Class;
type record_type_spec_nonterminal;
type record_type_spec_nonterminal_ptr is access all record_type_spec_nonterminal'Class;
type attrib_def_nonterminal;
type attrib_def_nonterminal_ptr is access all attrib_def_nonterminal'Class;
type rep_spec_nonterminal;
type rep_spec_nonterminal_ptr is access all rep_spec_nonterminal'Class;
type generic_inst_nonterminal;
type generic_inst_nonterminal_ptr is access all generic_inst_nonterminal'Class;
type generic_pkg_inst_nonterminal;
type generic_pkg_inst_nonterminal_ptr is access all generic_pkg_inst_nonterminal'Class;
type generic_subp_inst_nonterminal;
type generic_subp_inst_nonterminal_ptr is access all generic_subp_inst_nonterminal'Class;
type generic_derived_type_nonterminal;
type generic_derived_type_nonterminal_ptr is access all generic_derived_type_nonterminal'Class;
type generic_type_def_nonterminal;
type generic_type_def_nonterminal_ptr is access all generic_type_def_nonterminal'Class;
type subp_default_nonterminal;
type subp_default_nonterminal_ptr is access all subp_default_nonterminal'Class;
type generic_discrim_part_opt_nonterminal;
type generic_discrim_part_opt_nonterminal_ptr is access all generic_discrim_part_opt_nonterminal'Class;
type generic_formal_nonterminal;
type generic_formal_nonterminal_ptr is access all generic_formal_nonterminal'Class;
type generic_formal_part_nonterminal;
type generic_formal_part_nonterminal_ptr is access all generic_formal_part_nonterminal'Class;
type generic_decl_nonterminal;
type generic_decl_nonterminal_ptr is access all generic_decl_nonterminal'Class;
type requeue_stmt_nonterminal;
type requeue_stmt_nonterminal_ptr is access all requeue_stmt_nonterminal'Class;
type raise_stmt_nonterminal;
type raise_stmt_nonterminal_ptr is access all raise_stmt_nonterminal'Class;
type except_choice_nonterminal;
type except_choice_nonterminal_ptr is access all except_choice_nonterminal'Class;
type except_choice_s_nonterminal;
type except_choice_s_nonterminal_ptr is access all except_choice_s_nonterminal'Class;
type exception_handler_nonterminal;
type exception_handler_nonterminal_ptr is access all exception_handler_nonterminal'Class;
type except_handler_part_nonterminal;
type except_handler_part_nonterminal_ptr is access all except_handler_part_nonterminal'Class;
type exception_decl_nonterminal;
type exception_decl_nonterminal_ptr is access all exception_decl_nonterminal'Class;
type body_stub_nonterminal;
type body_stub_nonterminal_ptr is access all body_stub_nonterminal'Class;
type subunit_body_nonterminal;
type subunit_body_nonterminal_ptr is access all subunit_body_nonterminal'Class;
type subunit_nonterminal;
type subunit_nonterminal_ptr is access all subunit_nonterminal'Class;
type unit_nonterminal;
type unit_nonterminal_ptr is access all unit_nonterminal'Class;
type use_clause_opt_nonterminal;
type use_clause_opt_nonterminal_ptr is access all use_clause_opt_nonterminal'Class;
type with_clause_nonterminal;
type with_clause_nonterminal_ptr is access all with_clause_nonterminal'Class;
type context_spec_nonterminal;
type context_spec_nonterminal_ptr is access all context_spec_nonterminal'Class;
type private_opt_nonterminal;
type private_opt_nonterminal_ptr is access all private_opt_nonterminal'Class;
type comp_unit_nonterminal;
type comp_unit_nonterminal_ptr is access all comp_unit_nonterminal'Class;
type compilation_nonterminal;
type compilation_nonterminal_ptr is access all compilation_nonterminal'Class;
type abort_stmt_nonterminal;
type abort_stmt_nonterminal_ptr is access all abort_stmt_nonterminal'Class;
type stmts_opt_nonterminal;
type stmts_opt_nonterminal_ptr is access all stmts_opt_nonterminal'Class;
type cond_entry_call_nonterminal;
type cond_entry_call_nonterminal_ptr is access all cond_entry_call_nonterminal'Class;
type timed_entry_call_nonterminal;
type timed_entry_call_nonterminal_ptr is access all timed_entry_call_nonterminal'Class;
type async_select_nonterminal;
type async_select_nonterminal_ptr is access all async_select_nonterminal'Class;
type delay_or_entry_alt_nonterminal;
type delay_or_entry_alt_nonterminal_ptr is access all delay_or_entry_alt_nonterminal'Class;
type select_alt_nonterminal;
type select_alt_nonterminal_ptr is access all select_alt_nonterminal'Class;
type or_select_nonterminal;
type or_select_nonterminal_ptr is access all or_select_nonterminal'Class;
type guarded_select_alt_nonterminal;
type guarded_select_alt_nonterminal_ptr is access all guarded_select_alt_nonterminal'Class;
type select_wait_nonterminal;
type select_wait_nonterminal_ptr is access all select_wait_nonterminal'Class;
type select_stmt_nonterminal;
type select_stmt_nonterminal_ptr is access all select_stmt_nonterminal'Class;
type delay_stmt_nonterminal;
type delay_stmt_nonterminal_ptr is access all delay_stmt_nonterminal'Class;
type entry_name_nonterminal;
type entry_name_nonterminal_ptr is access all entry_name_nonterminal'Class;
type accept_hdr_nonterminal;
type accept_hdr_nonterminal_ptr is access all accept_hdr_nonterminal'Class;
type accept_stmt_nonterminal;
type accept_stmt_nonterminal_ptr is access all accept_stmt_nonterminal'Class;
type entry_call_nonterminal;
type entry_call_nonterminal_ptr is access all entry_call_nonterminal'Class;
type rep_spec_s_nonterminal;
type rep_spec_s_nonterminal_ptr is access all rep_spec_s_nonterminal'Class;
type entry_body_part_nonterminal;
type entry_body_part_nonterminal_ptr is access all entry_body_part_nonterminal'Class;
type entry_body_nonterminal;
type entry_body_nonterminal_ptr is access all entry_body_nonterminal'Class;
type entry_decl_nonterminal;
type entry_decl_nonterminal_ptr is access all entry_decl_nonterminal'Class;
type entry_decl_s_nonterminal;
type entry_decl_s_nonterminal_ptr is access all entry_decl_s_nonterminal'Class;
type prot_op_body_nonterminal;
type prot_op_body_nonterminal_ptr is access all prot_op_body_nonterminal'Class;
type prot_op_body_s_nonterminal;
type prot_op_body_s_nonterminal_ptr is access all prot_op_body_s_nonterminal'Class;
type prot_body_nonterminal;
type prot_body_nonterminal_ptr is access all prot_body_nonterminal'Class;
type prot_elem_decl_nonterminal;
type prot_elem_decl_nonterminal_ptr is access all prot_elem_decl_nonterminal'Class;
type prot_elem_decl_s_nonterminal;
type prot_elem_decl_s_nonterminal_ptr is access all prot_elem_decl_s_nonterminal'Class;
type prot_op_decl_nonterminal;
type prot_op_decl_nonterminal_ptr is access all prot_op_decl_nonterminal'Class;
type prot_op_decl_s_nonterminal;
type prot_op_decl_s_nonterminal_ptr is access all prot_op_decl_s_nonterminal'Class;
type prot_private_opt_nonterminal;
type prot_private_opt_nonterminal_ptr is access all prot_private_opt_nonterminal'Class;
type prot_def_nonterminal;
type prot_def_nonterminal_ptr is access all prot_def_nonterminal'Class;
type prot_spec_nonterminal;
type prot_spec_nonterminal_ptr is access all prot_spec_nonterminal'Class;
type prot_decl_nonterminal;
type prot_decl_nonterminal_ptr is access all prot_decl_nonterminal'Class;
type task_body_nonterminal;
type task_body_nonterminal_ptr is access all task_body_nonterminal'Class;
type task_private_opt_nonterminal;
type task_private_opt_nonterminal_ptr is access all task_private_opt_nonterminal'Class;
type task_def_nonterminal;
type task_def_nonterminal_ptr is access all task_def_nonterminal'Class;
type task_spec_nonterminal;
type task_spec_nonterminal_ptr is access all task_spec_nonterminal'Class;
type task_decl_nonterminal;
type task_decl_nonterminal_ptr is access all task_decl_nonterminal'Class;
type renaming_nonterminal;
type renaming_nonterminal_ptr is access all renaming_nonterminal'Class;
type rename_unit_nonterminal;
type rename_unit_nonterminal_ptr is access all rename_unit_nonterminal'Class;
type rename_decl_nonterminal;
type rename_decl_nonterminal_ptr is access all rename_decl_nonterminal'Class;
type name_s_nonterminal;
type name_s_nonterminal_ptr is access all name_s_nonterminal'Class;
type use_clause_nonterminal;
type use_clause_nonterminal_ptr is access all use_clause_nonterminal'Class;
type limited_opt_nonterminal;
type limited_opt_nonterminal_ptr is access all limited_opt_nonterminal'Class;
type private_type_nonterminal;
type private_type_nonterminal_ptr is access all private_type_nonterminal'Class;
type body_opt_nonterminal;
type body_opt_nonterminal_ptr is access all body_opt_nonterminal'Class;
type pkg_body_nonterminal;
type pkg_body_nonterminal_ptr is access all pkg_body_nonterminal'Class;
type c_id_opt_nonterminal;
type c_id_opt_nonterminal_ptr is access all c_id_opt_nonterminal'Class;
type private_part_nonterminal;
type private_part_nonterminal_ptr is access all private_part_nonterminal'Class;
type pkg_spec_nonterminal;
type pkg_spec_nonterminal_ptr is access all pkg_spec_nonterminal'Class;
type pkg_decl_nonterminal;
type pkg_decl_nonterminal_ptr is access all pkg_decl_nonterminal'Class;
type procedure_call_nonterminal;
type procedure_call_nonterminal_ptr is access all procedure_call_nonterminal'Class;
type subprog_body_nonterminal;
type subprog_body_nonterminal_ptr is access all subprog_body_nonterminal'Class;
type subprog_spec_is_push_nonterminal;
type subprog_spec_is_push_nonterminal_ptr is access all subprog_spec_is_push_nonterminal'Class;
type mode_nonterminal;
type mode_nonterminal_ptr is access all mode_nonterminal'Class;
type param_nonterminal;
type param_nonterminal_ptr is access all param_nonterminal'Class;
type param_s_nonterminal;
type param_s_nonterminal_ptr is access all param_s_nonterminal'Class;
type formal_part_nonterminal;
type formal_part_nonterminal_ptr is access all formal_part_nonterminal'Class;
type formal_part_opt_nonterminal;
type formal_part_opt_nonterminal_ptr is access all formal_part_opt_nonterminal'Class;
type designator_nonterminal;
type designator_nonterminal_ptr is access all designator_nonterminal'Class;
type subprog_spec_nonterminal;
type subprog_spec_nonterminal_ptr is access all subprog_spec_nonterminal'Class;
type subprog_decl_nonterminal;
type subprog_decl_nonterminal_ptr is access all subprog_decl_nonterminal'Class;
type goto_stmt_nonterminal;
type goto_stmt_nonterminal_ptr is access all goto_stmt_nonterminal'Class;
type return_stmt_nonterminal;
type return_stmt_nonterminal_ptr is access all return_stmt_nonterminal'Class;
type when_opt_nonterminal;
type when_opt_nonterminal_ptr is access all when_opt_nonterminal'Class;
type name_opt_nonterminal;
type name_opt_nonterminal_ptr is access all name_opt_nonterminal'Class;
type exit_stmt_nonterminal;
type exit_stmt_nonterminal_ptr is access all exit_stmt_nonterminal'Class;
type except_handler_part_opt_nonterminal;
type except_handler_part_opt_nonterminal_ptr is access all except_handler_part_opt_nonterminal'Class;
type handled_stmt_s_nonterminal;
type handled_stmt_s_nonterminal_ptr is access all handled_stmt_s_nonterminal'Class;
type block_body_nonterminal;
type block_body_nonterminal_ptr is access all block_body_nonterminal'Class;
type block_decl_nonterminal;
type block_decl_nonterminal_ptr is access all block_decl_nonterminal'Class;
type block_nonterminal;
type block_nonterminal_ptr is access all block_nonterminal'Class;
type id_opt_nonterminal;
type id_opt_nonterminal_ptr is access all id_opt_nonterminal'Class;
type basic_loop_nonterminal;
type basic_loop_nonterminal_ptr is access all basic_loop_nonterminal'Class;
type reverse_opt_nonterminal;
type reverse_opt_nonterminal_ptr is access all reverse_opt_nonterminal'Class;
type iter_part_nonterminal;
type iter_part_nonterminal_ptr is access all iter_part_nonterminal'Class;
type iteration_nonterminal;
type iteration_nonterminal_ptr is access all iteration_nonterminal'Class;
type label_opt_nonterminal;
type label_opt_nonterminal_ptr is access all label_opt_nonterminal'Class;
type loop_stmt_nonterminal;
type loop_stmt_nonterminal_ptr is access all loop_stmt_nonterminal'Class;
type alternative_nonterminal;
type alternative_nonterminal_ptr is access all alternative_nonterminal'Class;
type alternative_s_nonterminal;
type alternative_s_nonterminal_ptr is access all alternative_s_nonterminal'Class;
type case_hdr_nonterminal;
type case_hdr_nonterminal_ptr is access all case_hdr_nonterminal'Class;
type case_stmt_nonterminal;
type case_stmt_nonterminal_ptr is access all case_stmt_nonterminal'Class;
type else_opt_nonterminal;
type else_opt_nonterminal_ptr is access all else_opt_nonterminal'Class;
type condition_nonterminal;
type condition_nonterminal_ptr is access all condition_nonterminal'Class;
type cond_part_nonterminal;
type cond_part_nonterminal_ptr is access all cond_part_nonterminal'Class;
type cond_clause_nonterminal;
type cond_clause_nonterminal_ptr is access all cond_clause_nonterminal'Class;
type cond_clause_s_nonterminal;
type cond_clause_s_nonterminal_ptr is access all cond_clause_s_nonterminal'Class;
type if_stmt_nonterminal;
type if_stmt_nonterminal_ptr is access all if_stmt_nonterminal'Class;
type assign_stmt_nonterminal;
type assign_stmt_nonterminal_ptr is access all assign_stmt_nonterminal'Class;
type null_stmt_nonterminal;
type null_stmt_nonterminal_ptr is access all null_stmt_nonterminal'Class;
type label_nonterminal;
type label_nonterminal_ptr is access all label_nonterminal'Class;
type compound_stmt_nonterminal;
type compound_stmt_nonterminal_ptr is access all compound_stmt_nonterminal'Class;
type simple_stmt_nonterminal;
type simple_stmt_nonterminal_ptr is access all simple_stmt_nonterminal'Class;
type unlabeled_nonterminal;
type unlabeled_nonterminal_ptr is access all unlabeled_nonterminal'Class;
type statement_nonterminal;
type statement_nonterminal_ptr is access all statement_nonterminal'Class;
type statement_s_nonterminal;
type statement_s_nonterminal_ptr is access all statement_s_nonterminal'Class;
type allocator_nonterminal;
type allocator_nonterminal_ptr is access all allocator_nonterminal'Class;
type qualified_nonterminal;
type qualified_nonterminal_ptr is access all qualified_nonterminal'Class;
type parenthesized_primary_nonterminal;
type parenthesized_primary_nonterminal_ptr is access all parenthesized_primary_nonterminal'Class;
type primary_nonterminal;
type primary_nonterminal_ptr is access all primary_nonterminal'Class;
type factor_nonterminal;
type factor_nonterminal_ptr is access all factor_nonterminal'Class;
type multiplying_nonterminal;
type multiplying_nonterminal_ptr is access all multiplying_nonterminal'Class;
type term_nonterminal;
type term_nonterminal_ptr is access all term_nonterminal'Class;
type adding_nonterminal;
type adding_nonterminal_ptr is access all adding_nonterminal'Class;
type unary_nonterminal;
type unary_nonterminal_ptr is access all unary_nonterminal'Class;
type simple_expression_nonterminal;
type simple_expression_nonterminal_ptr is access all simple_expression_nonterminal'Class;
type membership_nonterminal;
type membership_nonterminal_ptr is access all membership_nonterminal'Class;
type relational_nonterminal;
type relational_nonterminal_ptr is access all relational_nonterminal'Class;
type relation_nonterminal;
type relation_nonterminal_ptr is access all relation_nonterminal'Class;
type short_circuit_nonterminal;
type short_circuit_nonterminal_ptr is access all short_circuit_nonterminal'Class;
type logical_nonterminal;
type logical_nonterminal_ptr is access all logical_nonterminal'Class;
type expression_nonterminal;
type expression_nonterminal_ptr is access all expression_nonterminal'Class;
type comp_assoc_nonterminal;
type comp_assoc_nonterminal_ptr is access all comp_assoc_nonterminal'Class;
type value_s_2_nonterminal;
type value_s_2_nonterminal_ptr is access all value_s_2_nonterminal'Class;
type aggregate_nonterminal;
type aggregate_nonterminal_ptr is access all aggregate_nonterminal'Class;
type literal_nonterminal;
type literal_nonterminal_ptr is access all literal_nonterminal'Class;
type attribute_id_nonterminal;
type attribute_id_nonterminal_ptr is access all attribute_id_nonterminal'Class;
type attribute_nonterminal;
type attribute_nonterminal_ptr is access all attribute_nonterminal'Class;
type selected_comp_nonterminal;
type selected_comp_nonterminal_ptr is access all selected_comp_nonterminal'Class;
type value_nonterminal;
type value_nonterminal_ptr is access all value_nonterminal'Class;
type value_s_nonterminal;
type value_s_nonterminal_ptr is access all value_s_nonterminal'Class;
type indexed_comp_nonterminal;
type indexed_comp_nonterminal_ptr is access all indexed_comp_nonterminal'Class;
type operator_symbol_nonterminal;
type operator_symbol_nonterminal_ptr is access all operator_symbol_nonterminal'Class;
type used_char_nonterminal;
type used_char_nonterminal_ptr is access all used_char_nonterminal'Class;
type c_name_list_nonterminal;
type c_name_list_nonterminal_ptr is access all c_name_list_nonterminal'Class;
type compound_name_nonterminal;
type compound_name_nonterminal_ptr is access all compound_name_nonterminal'Class;
type simple_name_nonterminal;
type simple_name_nonterminal_ptr is access all simple_name_nonterminal'Class;
type mark_nonterminal;
type mark_nonterminal_ptr is access all mark_nonterminal'Class;
type name_nonterminal;
type name_nonterminal_ptr is access all name_nonterminal'Class;
type body_nt_nonterminal;
type body_nt_nonterminal_ptr is access all body_nt_nonterminal'Class;
type decl_item_or_body_nonterminal;
type decl_item_or_body_nonterminal_ptr is access all decl_item_or_body_nonterminal'Class;
type decl_item_or_body_s1_nonterminal;
type decl_item_or_body_s1_nonterminal_ptr is access all decl_item_or_body_s1_nonterminal'Class;
type decl_item_nonterminal;
type decl_item_nonterminal_ptr is access all decl_item_nonterminal'Class;
type decl_item_s1_nonterminal;
type decl_item_s1_nonterminal_ptr is access all decl_item_s1_nonterminal'Class;
type decl_item_s_nonterminal;
type decl_item_s_nonterminal_ptr is access all decl_item_s_nonterminal'Class;
type decl_part_nonterminal;
type decl_part_nonterminal_ptr is access all decl_part_nonterminal'Class;
type prot_opt_nonterminal;
type prot_opt_nonterminal_ptr is access all prot_opt_nonterminal'Class;
type access_type_nonterminal;
type access_type_nonterminal_ptr is access all access_type_nonterminal'Class;
type discrete_with_range_nonterminal;
type discrete_with_range_nonterminal_ptr is access all discrete_with_range_nonterminal'Class;
type choice_nonterminal;
type choice_nonterminal_ptr is access all choice_nonterminal'Class;
type choice_s_nonterminal;
type choice_s_nonterminal_ptr is access all choice_s_nonterminal'Class;
type variant_nonterminal;
type variant_nonterminal_ptr is access all variant_nonterminal'Class;
type variant_s_nonterminal;
type variant_s_nonterminal_ptr is access all variant_s_nonterminal'Class;
type variant_part_nonterminal;
type variant_part_nonterminal_ptr is access all variant_part_nonterminal'Class;
type access_opt_nonterminal;
type access_opt_nonterminal_ptr is access all access_opt_nonterminal'Class;
type discrim_spec_nonterminal;
type discrim_spec_nonterminal_ptr is access all discrim_spec_nonterminal'Class;
type discrim_spec_s_nonterminal;
type discrim_spec_s_nonterminal_ptr is access all discrim_spec_s_nonterminal'Class;
type discrim_part_nonterminal;
type discrim_part_nonterminal_ptr is access all discrim_part_nonterminal'Class;
type comp_decl_nonterminal;
type comp_decl_nonterminal_ptr is access all comp_decl_nonterminal'Class;
type variant_part_opt_nonterminal;
type variant_part_opt_nonterminal_ptr is access all variant_part_opt_nonterminal'Class;
type comp_decl_s_nonterminal;
type comp_decl_s_nonterminal_ptr is access all comp_decl_s_nonterminal'Class;
type comp_list_nonterminal;
type comp_list_nonterminal_ptr is access all comp_list_nonterminal'Class;
type tagged_opt_nonterminal;
type tagged_opt_nonterminal_ptr is access all tagged_opt_nonterminal'Class;
type record_def_nonterminal;
type record_def_nonterminal_ptr is access all record_def_nonterminal'Class;
type record_type_nonterminal;
type record_type_nonterminal_ptr is access all record_type_nonterminal'Class;
type range_constr_opt_nonterminal;
type range_constr_opt_nonterminal_ptr is access all range_constr_opt_nonterminal'Class;
type discrete_range_nonterminal;
type discrete_range_nonterminal_ptr is access all discrete_range_nonterminal'Class;
type iter_discrete_range_s_nonterminal;
type iter_discrete_range_s_nonterminal_ptr is access all iter_discrete_range_s_nonterminal'Class;
type iter_index_constraint_nonterminal;
type iter_index_constraint_nonterminal_ptr is access all iter_index_constraint_nonterminal'Class;
type index_nonterminal;
type index_nonterminal_ptr is access all index_nonterminal'Class;
type index_s_nonterminal;
type index_s_nonterminal_ptr is access all index_s_nonterminal'Class;
type aliased_opt_nonterminal;
type aliased_opt_nonterminal_ptr is access all aliased_opt_nonterminal'Class;
type component_subtype_def_nonterminal;
type component_subtype_def_nonterminal_ptr is access all component_subtype_def_nonterminal'Class;
type constr_array_type_nonterminal;
type constr_array_type_nonterminal_ptr is access all constr_array_type_nonterminal'Class;
type unconstr_array_type_nonterminal;
type unconstr_array_type_nonterminal_ptr is access all unconstr_array_type_nonterminal'Class;
type array_type_nonterminal;
type array_type_nonterminal_ptr is access all array_type_nonterminal'Class;
type fixed_type_nonterminal;
type fixed_type_nonterminal_ptr is access all fixed_type_nonterminal'Class;
type float_type_nonterminal;
type float_type_nonterminal_ptr is access all float_type_nonterminal'Class;
type real_type_nonterminal;
type real_type_nonterminal_ptr is access all real_type_nonterminal'Class;
type range_spec_opt_nonterminal;
type range_spec_opt_nonterminal_ptr is access all range_spec_opt_nonterminal'Class;
type range_spec_nonterminal;
type range_spec_nonterminal_ptr is access all range_spec_nonterminal'Class;
type integer_type_nonterminal;
type integer_type_nonterminal_ptr is access all integer_type_nonterminal'Class;
type enum_id_nonterminal;
type enum_id_nonterminal_ptr is access all enum_id_nonterminal'Class;
type enum_id_s_nonterminal;
type enum_id_s_nonterminal_ptr is access all enum_id_s_nonterminal'Class;
type enumeration_type_nonterminal;
type enumeration_type_nonterminal_ptr is access all enumeration_type_nonterminal'Class;
type range_sym_nonterminal;
type range_sym_nonterminal_ptr is access all range_sym_nonterminal'Class;
type range_constraint_nonterminal;
type range_constraint_nonterminal_ptr is access all range_constraint_nonterminal'Class;
type derived_type_nonterminal;
type derived_type_nonterminal_ptr is access all derived_type_nonterminal'Class;
type decimal_digits_constraint_nonterminal;
type decimal_digits_constraint_nonterminal_ptr is access all decimal_digits_constraint_nonterminal'Class;
type constraint_nonterminal;
type constraint_nonterminal_ptr is access all constraint_nonterminal'Class;
type subtype_ind_nonterminal;
type subtype_ind_nonterminal_ptr is access all subtype_ind_nonterminal'Class;
type subtype_decl_nonterminal;
type subtype_decl_nonterminal_ptr is access all subtype_decl_nonterminal'Class;
type type_def_nonterminal;
type type_def_nonterminal_ptr is access all type_def_nonterminal'Class;
type type_completion_nonterminal;
type type_completion_nonterminal_ptr is access all type_completion_nonterminal'Class;
type discrim_part_opt_nonterminal;
type discrim_part_opt_nonterminal_ptr is access all discrim_part_opt_nonterminal'Class;
type type_decl_nonterminal;
type type_decl_nonterminal_ptr is access all type_decl_nonterminal'Class;
type number_decl_nonterminal;
type number_decl_nonterminal_ptr is access all number_decl_nonterminal'Class;
type init_opt_nonterminal;
type init_opt_nonterminal_ptr is access all init_opt_nonterminal'Class;
type object_subtype_def_nonterminal;
type object_subtype_def_nonterminal_ptr is access all object_subtype_def_nonterminal'Class;
type object_qualifier_opt_nonterminal;
type object_qualifier_opt_nonterminal_ptr is access all object_qualifier_opt_nonterminal'Class;
type def_id_nonterminal;
type def_id_nonterminal_ptr is access all def_id_nonterminal'Class;
type def_id_s_nonterminal;
type def_id_s_nonterminal_ptr is access all def_id_s_nonterminal'Class;
type object_decl_nonterminal;
type object_decl_nonterminal_ptr is access all object_decl_nonterminal'Class;
type decl_nonterminal;
type decl_nonterminal_ptr is access all decl_nonterminal'Class;
type pragma_s_nonterminal;
type pragma_s_nonterminal_ptr is access all pragma_s_nonterminal'Class;
type pragma_arg_nonterminal;
type pragma_arg_nonterminal_ptr is access all pragma_arg_nonterminal'Class;
type pragma_arg_s_nonterminal;
type pragma_arg_s_nonterminal_ptr is access all pragma_arg_s_nonterminal'Class;
type pragma_sym_nonterminal;
type pragma_sym_nonterminal_ptr is access all pragma_sym_nonterminal'Class;
type CHAR_STRING_nonterminal;
type CHAR_STRING_nonterminal_ptr is access all CHAR_STRING_nonterminal'Class;
type NE_nonterminal;
type NE_nonterminal_ptr is access all NE_nonterminal'Class;
type LT_EQ_nonterminal;
type LT_EQ_nonterminal_ptr is access all LT_EQ_nonterminal'Class;
type GE_nonterminal;
type GE_nonterminal_ptr is access all GE_nonterminal'Class;
type LT_LT_nonterminal;
type LT_LT_nonterminal_ptr is access all LT_LT_nonterminal'Class;
type GT_GT_nonterminal;
type GT_GT_nonterminal_ptr is access all GT_GT_nonterminal'Class;
type CHAR_LIT_nonterminal;
type CHAR_LIT_nonterminal_ptr is access all CHAR_LIT_nonterminal'Class;
type NUMERIC_LIT_nonterminal;
type NUMERIC_LIT_nonterminal_ptr is access all NUMERIC_LIT_nonterminal'Class;
type NUMERIC_LIT_nonterminal is abstract new Parseable with null record;
type NUMERIC_LIT_nonterminal1 is new NUMERIC_LIT_nonterminal with record
DECIMAL_LITERAL_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out NUMERIC_LIT_nonterminal1);
type NUMERIC_LIT_nonterminal2 is new NUMERIC_LIT_nonterminal with record
BASED_LITERAL_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out NUMERIC_LIT_nonterminal2);
type CHAR_LIT_nonterminal is new Parseable with record
CHAR_LITERAL_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out CHAR_LIT_nonterminal);
type GT_GT_nonterminal is new Parseable with record
RIGHT_LABEL_BRACKET_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out GT_GT_nonterminal);
type LT_LT_nonterminal is new Parseable with record
LEFT_LABEL_BRACKET_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out LT_LT_nonterminal);
type GE_nonterminal is new Parseable with record
GREATER_THAN_OR_EQUAL_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out GE_nonterminal);
type LT_EQ_nonterminal is new Parseable with record
LESS_THAN_OR_EQUAL_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out LT_EQ_nonterminal);
type NE_nonterminal is new Parseable with record
INEQUALITY_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out NE_nonterminal);
type CHAR_STRING_nonterminal is new Parseable with record
STRING_LITERAL_part : Parseable_Token_Ptr;
end record;
procedure Get_LC(This : in CHAR_STRING_nonterminal; Line, Column : out Integer);
procedure Translate(This : in out CHAR_STRING_nonterminal);
type pragma_sym_nonterminal is abstract new Parseable with null record;
type pragma_sym_nonterminal1 is new pragma_sym_nonterminal with record
PRAGMA_part : Parseable_Token_Ptr;
identifier_part : Parseable_Token_Ptr;
SEMICOLON_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out pragma_sym_nonterminal1);
type pragma_sym_nonterminal2 is new pragma_sym_nonterminal with record
PRAGMA_part : Parseable_Token_Ptr;
simple_name_part : simple_name_nonterminal_Ptr;
L_PAREN_part : Parseable_Token_Ptr;
pragma_arg_s_part : pragma_arg_s_nonterminal_Ptr;
R_PAREN_part : Parseable_Token_Ptr;
SEMICOLON_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out pragma_sym_nonterminal2);
type pragma_arg_s_nonterminal is abstract new Parseable with null record;
type pragma_arg_s_nonterminal1 is new pragma_arg_s_nonterminal with record
pragma_arg_part : pragma_arg_nonterminal_Ptr;
end record;
procedure Translate(This : in out pragma_arg_s_nonterminal1);
type pragma_arg_s_nonterminal2 is new pragma_arg_s_nonterminal with record
pragma_arg_s_part : pragma_arg_s_nonterminal_Ptr;
COMMA_part : Parseable_Token_Ptr;
pragma_arg_part : pragma_arg_nonterminal_Ptr;
end record;
procedure Translate(This : in out pragma_arg_s_nonterminal2);
type pragma_arg_nonterminal is abstract new Parseable with null record;
type pragma_arg_nonterminal1 is new pragma_arg_nonterminal with record
expression_part : expression_nonterminal_Ptr;
end record;
procedure Translate(This : in out pragma_arg_nonterminal1);
type pragma_arg_nonterminal2 is new pragma_arg_nonterminal with record
simple_name_part : simple_name_nonterminal_Ptr;
ARROW_part : Parseable_Token_Ptr;
expression_part : expression_nonterminal_Ptr;
end record;
procedure Translate(This : in out pragma_arg_nonterminal2);
type pragma_s_nonterminal is abstract new Parseable with null record;
type pragma_s_nonterminal1 is new pragma_s_nonterminal with record
null;
end record;
procedure Translate(This : in out pragma_s_nonterminal1);
type pragma_s_nonterminal2 is new pragma_s_nonterminal with record
pragma_s_part : pragma_s_nonterminal_Ptr;
pragma_sym_part : pragma_sym_nonterminal_Ptr;
end record;
procedure Translate(This : in out pragma_s_nonterminal2);
type decl_nonterminal is abstract new Parseable with null record;
function Match(This : in decl_nonterminal; Id : Parseable_Token_Ptr) return boolean is abstract;
type decl_nonterminal1 is new decl_nonterminal with record
object_decl_part : object_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal1; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal1);
type decl_nonterminal2 is new decl_nonterminal with record
number_decl_part : number_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal2; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal2);
type decl_nonterminal3 is new decl_nonterminal with record
type_decl_part : type_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal3; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal3);
type decl_nonterminal4 is new decl_nonterminal with record
subtype_decl_part : subtype_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal4; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal4);
type decl_nonterminal5 is new decl_nonterminal with record
subprog_decl_part : subprog_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal5; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal5);
type decl_nonterminal6 is new decl_nonterminal with record
pkg_decl_part : pkg_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal6; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal6);
type decl_nonterminal7 is new decl_nonterminal with record
task_decl_part : task_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal7; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal7);
type decl_nonterminal8 is new decl_nonterminal with record
prot_decl_part : prot_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal8; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal8);
type decl_nonterminal9 is new decl_nonterminal with record
exception_decl_part : exception_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal9; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal9);
type decl_nonterminal10 is new decl_nonterminal with record
rename_decl_part : rename_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal10; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal10);
type decl_nonterminal11 is new decl_nonterminal with record
generic_decl_part : generic_decl_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal11; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal11);
type decl_nonterminal12 is new decl_nonterminal with record
body_stub_part : body_stub_nonterminal_Ptr;
end record;
function Match(This : in decl_nonterminal12; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out decl_nonterminal12);
type object_decl_nonterminal is new Parseable with record
def_id_s_part : def_id_s_nonterminal_Ptr;
COLON_part : Parseable_Token_Ptr;
object_qualifier_opt_part : object_qualifier_opt_nonterminal_Ptr;
object_subtype_def_part : object_subtype_def_nonterminal_Ptr;
init_opt_part : init_opt_nonterminal_Ptr;
SEMICOLON_part : Parseable_Token_Ptr;
end record;
function Is_Constant_Declaration(This : in object_decl_nonterminal) return boolean;
function Number_Of_Ids(This : in object_decl_nonterminal) return integer;
function Match(This : in object_decl_nonterminal; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out object_decl_nonterminal);
type def_id_s_nonterminal is abstract new Parseable with null record;
function Number_Of_Ids(This : in def_id_s_nonterminal) return integer is abstract;
function Get_First_Identifier(This : in def_id_s_nonterminal) return Parseable_Token_Ptr is abstract;
function Get_Arity(This : in def_id_s_nonterminal) return integer is abstract;
function In_Id_List(This : in def_id_s_nonterminal; Id : Parseable_Token_Ptr) return boolean is abstract;
function Contains_Multiple_Ids(This: in def_id_s_nonterminal) return boolean is abstract;
procedure Build_Formal_Parameter_List(This : in def_id_s_nonterminal;
Formal_Parameter_Array : in out Lego_Builtins.Formal_Parameter_Array_Type; Next_Slot : in out integer) is abstract;
procedure Translate_First_Id(This: in def_id_s_nonterminal) is abstract;
procedure Translate_Formal_Parameters(This : in out def_id_s_nonterminal; Reference : Boolean)
is abstract;
type def_id_s_nonterminal1 is new def_id_s_nonterminal with record
def_id_part : def_id_nonterminal_Ptr;
end record;
function Number_Of_Ids(This : in def_id_s_nonterminal1) return integer;
function Get_First_Identifier(This : in def_id_s_nonterminal1) return Parseable_Token_Ptr;
function Get_Arity(This : in def_id_s_nonterminal1) return integer;
function In_Id_List(This : in def_id_s_nonterminal1; Id : Parseable_Token_Ptr) return boolean;
function Contains_Multiple_Ids(This: in def_id_s_nonterminal1) return boolean;
procedure Build_Formal_Parameter_List(This : in def_id_s_nonterminal1;
Formal_Parameter_Array : in out Lego_Builtins.Formal_Parameter_Array_Type; Next_Slot : in out integer);
procedure Translate_First_Id(This: in def_id_s_nonterminal1);
procedure Translate(This : in out def_id_s_nonterminal1);
procedure Translate_Formal_Parameters(This : in out def_id_s_nonterminal1; Reference : Boolean);
type def_id_s_nonterminal2 is new def_id_s_nonterminal with record
def_id_s_part : def_id_s_nonterminal_Ptr;
COMMA_part : Parseable_Token_Ptr;
def_id_part : def_id_nonterminal_Ptr;
end record;
function Number_Of_Ids(This : in def_id_s_nonterminal2) return integer;
function Get_First_Identifier(This : in def_id_s_nonterminal2) return Parseable_Token_Ptr;
function Get_Arity(This : in def_id_s_nonterminal2) return integer;
function In_Id_List(This : in def_id_s_nonterminal2; Id : Parseable_Token_Ptr) return boolean;
function Contains_Multiple_Ids(This: in def_id_s_nonterminal2) return boolean;
procedure Build_Formal_Parameter_List(This : in def_id_s_nonterminal2;
Formal_Parameter_Array : in out Lego_Builtins.Formal_Parameter_Array_Type; Next_Slot : in out integer);
procedure Translate_First_Id(This: in def_id_s_nonterminal2);
procedure Translate(This : in out def_id_s_nonterminal2);
procedure Translate_Formal_Parameters(This : in out def_id_s_nonterminal2; Reference : Boolean);
type def_id_nonterminal is new Parseable with record
identifier_part : Parseable_Token_Ptr;
end record;
function Number_Of_Ids(This : in def_id_nonterminal) return integer;
procedure Translate(This : in out def_id_nonterminal);
type object_qualifier_opt_nonterminal is abstract new Parseable with null record;
function Is_Empty(This : in object_qualifier_opt_nonterminal) return boolean is abstract;
function Is_Keyword_Constant(This: in object_qualifier_opt_nonterminal) return boolean
is abstract;
type object_qualifier_opt_nonterminal1 is new object_qualifier_opt_nonterminal with record
null;
end record;
function Is_Empty(This : in object_qualifier_opt_nonterminal1) return boolean;
function Is_Keyword_Constant(This: in object_qualifier_opt_nonterminal1) return boolean;
procedure Translate(This : in out object_qualifier_opt_nonterminal1);
type object_qualifier_opt_nonterminal2 is new object_qualifier_opt_nonterminal with record
aliased_part : Parseable_Token_Ptr;
end record;
function Is_Empty(This : in object_qualifier_opt_nonterminal2) return boolean;
function Is_Keyword_Constant(This: in object_qualifier_opt_nonterminal2) return boolean;
procedure Translate(This : in out object_qualifier_opt_nonterminal2);
type object_qualifier_opt_nonterminal3 is new object_qualifier_opt_nonterminal with record
CONSTANT_part : Parseable_Token_Ptr;
end record;
function Is_Empty(This : in object_qualifier_opt_nonterminal3) return boolean;
function Is_Keyword_Constant(This: in object_qualifier_opt_nonterminal3) return boolean;
procedure Translate(This : in out object_qualifier_opt_nonterminal3);
type object_qualifier_opt_nonterminal4 is new object_qualifier_opt_nonterminal with record
aliased_part : Parseable_Token_Ptr;
CONSTANT_part : Parseable_Token_Ptr;
end record;
function Is_Empty(This : in object_qualifier_opt_nonterminal4) return boolean;
function Is_Keyword_Constant(This: in object_qualifier_opt_nonterminal4) return boolean;
procedure Translate(This : in out object_qualifier_opt_nonterminal4);
type object_subtype_def_nonterminal is abstract new Parseable with null record;
function Get_Array_Type(This : in object_subtype_def_nonterminal) return array_type_nonterminal_ptr is abstract;
function Is_Supported_Array_Declaration(This : in object_subtype_def_nonterminal) return boolean is abstract;
function Is_Inline_Array_Declaration(This : in object_subtype_def_nonterminal) return boolean is abstract;
function Get_Lower_Bound(This : in object_subtype_def_nonterminal) return simple_expression_nonterminal_ptr is abstract;
function Get_Upper_Bound(This : in object_subtype_def_nonterminal) return simple_expression_nonterminal_ptr is abstract;
function Is_Supported_Predefined_Type(This: in object_subtype_def_nonterminal) return boolean
is abstract;
type object_subtype_def_nonterminal1 is new object_subtype_def_nonterminal with record
subtype_ind_part : subtype_ind_nonterminal_Ptr;
end record;
function Get_Array_Type(This : in object_subtype_def_nonterminal1) return array_type_nonterminal_ptr;
function Is_Supported_Array_Declaration(This : in object_subtype_def_nonterminal1) return boolean;
function Is_Inline_Array_Declaration(This : in object_subtype_def_nonterminal1) return boolean;
function Get_Lower_Bound(This : in object_subtype_def_nonterminal1) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in object_subtype_def_nonterminal1) return simple_expression_nonterminal_ptr;
function Is_Supported_Predefined_Type(This: in object_subtype_def_nonterminal1) return boolean;
procedure Translate(This : in out object_subtype_def_nonterminal1);
type object_subtype_def_nonterminal2 is new object_subtype_def_nonterminal with record
array_type_part : array_type_nonterminal_Ptr;
end record;
function Get_Array_Type(This : in object_subtype_def_nonterminal2) return array_type_nonterminal_ptr;
function Is_Supported_Array_Declaration(This : in object_subtype_def_nonterminal2) return boolean;
function Is_Inline_Array_Declaration(This : in object_subtype_def_nonterminal2) return boolean;
function Get_Lower_Bound(This : in object_subtype_def_nonterminal2) return simple_expression_nonterminal_ptr ;
function Get_Upper_Bound(This : in object_subtype_def_nonterminal2) return simple_expression_nonterminal_ptr ;
function Is_Supported_Predefined_Type(This: in object_subtype_def_nonterminal2) return boolean;
procedure Translate(This : in out object_subtype_def_nonterminal2);
type init_opt_nonterminal is abstract new Parseable with null record;
function Is_Empty(This : in init_opt_nonterminal) return boolean is abstract;
procedure Translate_Expression(This : in init_opt_nonterminal) is abstract;
type init_opt_nonterminal1 is new init_opt_nonterminal with record
null;
end record;
procedure Translate(This : in out init_opt_nonterminal1);
procedure Translate_Expression(This : in init_opt_nonterminal1);
function Is_Empty(This : in init_opt_nonterminal1) return boolean;
type init_opt_nonterminal2 is new init_opt_nonterminal with record
ASSIGNMENT_part : Parseable_Token_Ptr;
expression_part : expression_nonterminal_Ptr;
end record;
procedure Translate(This : in out init_opt_nonterminal2);
procedure Translate_Expression(This : in init_opt_nonterminal2);
function Is_Empty(This : in init_opt_nonterminal2) return boolean;
type number_decl_nonterminal is new Parseable with record
def_id_s_part : def_id_s_nonterminal_Ptr;
COLON_part : Parseable_Token_Ptr;
CONSTANT_part : Parseable_Token_Ptr;
ASSIGNMENT_part : Parseable_Token_Ptr;
expression_part : expression_nonterminal_Ptr;
SEMICOLON_part : Parseable_Token_Ptr;
end record;
function Match(This : in number_decl_nonterminal; Id : Parseable_Token_Ptr) return boolean;
procedure Translate(This : in out number_decl_nonterminal);
type type_decl_nonterminal is new Parseable with record
TYPE_part : Parseable_Token_Ptr;
identifier_part : Parseable_Token_Ptr;
discrim_part_opt_part : discrim_part_opt_nonterminal_Ptr;
type_completion_part : type_completion_nonterminal_Ptr;
SEMICOLON_part : Parseable_Token_Ptr;
end record;
procedure Add_To_User_Type_List(This : in type_decl_nonterminal);
procedure Translate(This : in out type_decl_nonterminal);
type discrim_part_opt_nonterminal is abstract new Parseable with null record;
function Is_Empty(This : in discrim_part_opt_nonterminal) return boolean is abstract;
type discrim_part_opt_nonterminal1 is new discrim_part_opt_nonterminal with record
null;
end record;
function Is_Empty(This : in discrim_part_opt_nonterminal1) return boolean;
procedure Translate(This : in out discrim_part_opt_nonterminal1);
type discrim_part_opt_nonterminal2 is new discrim_part_opt_nonterminal with record
discrim_part_part : discrim_part_nonterminal_Ptr;
end record;
function Is_Empty(This : in discrim_part_opt_nonterminal2) return boolean;
procedure Translate(This : in out discrim_part_opt_nonterminal2);
type discrim_part_opt_nonterminal3 is new discrim_part_opt_nonterminal with record
L_PAREN_part : Parseable_Token_Ptr;
BOX_part : Parseable_Token_Ptr;
R_PAREN_part : Parseable_Token_Ptr;
end record;
function Is_Empty(This : in discrim_part_opt_nonterminal3) return boolean;
procedure Translate(This : in out discrim_part_opt_nonterminal3);
type type_completion_nonterminal is abstract new Parseable with null record;
function Get_Lower_Bound(This : in type_completion_nonterminal) return simple_expression_nonterminal_ptr is abstract;
function Get_Upper_Bound(This : in type_completion_nonterminal) return simple_expression_nonterminal_ptr is abstract;
function Is_Supported_Type_Completion(This : in type_completion_nonterminal) return boolean is abstract;
type type_completion_nonterminal1 is new type_completion_nonterminal with record
null;
end record;
function Get_Lower_Bound(This : in type_completion_nonterminal1) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_completion_nonterminal1) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Completion(This : in type_completion_nonterminal1) return boolean;
procedure Translate(This : in out type_completion_nonterminal1);
type type_completion_nonterminal2 is new type_completion_nonterminal with record
IS_part : Parseable_Token_Ptr;
type_def_part : type_def_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_completion_nonterminal2) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_completion_nonterminal2) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Completion(This : in type_completion_nonterminal2) return boolean;
procedure Translate(This : in out type_completion_nonterminal2);
type type_def_nonterminal is abstract new Parseable with null record;
function Get_Lower_Bound(This : in type_def_nonterminal) return simple_expression_nonterminal_ptr is abstract;
function Get_Upper_Bound(This : in type_def_nonterminal) return simple_expression_nonterminal_ptr is abstract;
function Is_Supported_Type_Def(This : in type_def_nonterminal) return boolean is abstract;
type type_def_nonterminal1 is new type_def_nonterminal with record
enumeration_type_part : enumeration_type_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_def_nonterminal1) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_def_nonterminal1) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Def(This : in type_def_nonterminal1) return boolean;
procedure Translate(This : in out type_def_nonterminal1);
type type_def_nonterminal2 is new type_def_nonterminal with record
integer_type_part : integer_type_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_def_nonterminal2) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_def_nonterminal2) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Def(This : in type_def_nonterminal2) return boolean;
procedure Translate(This : in out type_def_nonterminal2);
type type_def_nonterminal3 is new type_def_nonterminal with record
real_type_part : real_type_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_def_nonterminal3) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_def_nonterminal3) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Def(This : in type_def_nonterminal3) return boolean;
procedure Translate(This : in out type_def_nonterminal3);
type type_def_nonterminal4 is new type_def_nonterminal with record
array_type_part : array_type_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_def_nonterminal4) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_def_nonterminal4) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Def(This : in type_def_nonterminal4) return boolean;
procedure Translate(This : in out type_def_nonterminal4);
type type_def_nonterminal5 is new type_def_nonterminal with record
record_type_part : record_type_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_def_nonterminal5) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_def_nonterminal5) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Def(This : in type_def_nonterminal5) return boolean;
procedure Translate(This : in out type_def_nonterminal5);
type type_def_nonterminal6 is new type_def_nonterminal with record
access_type_part : access_type_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_def_nonterminal6) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_def_nonterminal6) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Def(This : in type_def_nonterminal6) return boolean;
procedure Translate(This : in out type_def_nonterminal6);
type type_def_nonterminal7 is new type_def_nonterminal with record
derived_type_part : derived_type_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_def_nonterminal7) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_def_nonterminal7) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Def(This : in type_def_nonterminal7) return boolean;
procedure Translate(This : in out type_def_nonterminal7);
type type_def_nonterminal8 is new type_def_nonterminal with record
private_type_part : private_type_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in type_def_nonterminal8) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in type_def_nonterminal8) return simple_expression_nonterminal_ptr;
function Is_Supported_Type_Def(This : in type_def_nonterminal8) return boolean;
procedure Translate(This : in out type_def_nonterminal8);
type subtype_decl_nonterminal is new Parseable with record
SUBTYPE_part : Parseable_Token_Ptr;
identifier_part : Parseable_Token_Ptr;
IS_part : Parseable_Token_Ptr;
subtype_ind_part : subtype_ind_nonterminal_Ptr;
SEMICOLON_part : Parseable_Token_Ptr;
end record;
procedure Translate(This : in out subtype_decl_nonterminal);
type subtype_ind_nonterminal is abstract new Parseable with null record;
function Get_Lower_Bound(This : in subtype_ind_nonterminal) return simple_expression_nonterminal_ptr is abstract;
function Get_Upper_Bound(This : in subtype_ind_nonterminal) return simple_expression_nonterminal_ptr is abstract;
function Is_Supported_User_Defined_Type(This : in subtype_ind_nonterminal) return boolean is abstract;
function Is_Supported_Predefined_Type(This : in subtype_ind_nonterminal) return boolean is abstract;
type subtype_ind_nonterminal1 is new subtype_ind_nonterminal with record
name_part : name_nonterminal_Ptr;
constraint_part : constraint_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in subtype_ind_nonterminal1) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in subtype_ind_nonterminal1) return simple_expression_nonterminal_ptr;
function Is_Supported_Predefined_Type(This: in subtype_ind_nonterminal1) return boolean;
function Is_Supported_User_Defined_Type(This : in subtype_ind_nonterminal1) return boolean;
procedure Translate(This : in out subtype_ind_nonterminal1);
type subtype_ind_nonterminal2 is new subtype_ind_nonterminal with record
name_part : name_nonterminal_Ptr;
end record;
function Get_Lower_Bound(This : in subtype_ind_nonterminal2) return simple_expression_nonterminal_ptr;
function Get_Upper_Bound(This : in subtype_ind_nonterminal2) return simple_expression_nonterminal_ptr;
function Is_Supported_Predefined_Type(This: in subtype_ind_nonterminal2) return boolean;
function Is_Supported_User_Defined_Type(This : in subtype_ind_nonterminal2) return boolean;
procedure Translate(This : in out subtype_ind_nonterminal2);