From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,169cfbee5fb652af X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-12-09 11:31:15 PST Path: archiver1.google.com!news2.google.com!newsfeed2.dallas1.level3.net!news.level3.com!crtntx1-snh1.gtei.net!news.gtei.net!newsfeed1.easynews.com!easynews.com!easynews!news3.optonline.net!newsfeed.kabelfoon.nl!213.218.66.70.MISMATCH!feeder.enertel.nl!nntpfeed-01.ops.asmr-01.energis-idc.net!news.completel.fr!ircam.fr!freenix!enst.fr!melchior!cuivre.fr.eu.org!melchior.frmug.org!not-for-mail From: "David C. Hoos" Newsgroups: comp.lang.ada Subject: Re: Free Ada parser Date: Tue, 9 Dec 2003 13:27:29 -0600 Organization: Cuivre, Argent, Or Message-ID: References: <6d4cbc3e.0312091010.7572566b@posting.google.com> NNTP-Posting-Host: lovelace.ada-france.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_04CB_01C3BE58.31BDD5F0" X-Trace: melchior.cuivre.fr.eu.org 1070998081 3297 80.67.180.195 (9 Dec 2003 19:28:01 GMT) X-Complaints-To: usenet@melchior.cuivre.fr.eu.org NNTP-Posting-Date: Tue, 9 Dec 2003 19:28:01 +0000 (UTC) To: "J Quirce" , "comp.lang.ada@ada.eu.org" Return-Path: X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1158 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 X-Virus-Scanned: by amavisd-new-20030616-p5 (Debian) at ada-france.org X-BeenThere: comp.lang.ada@ada-france.org X-Mailman-Version: 2.1.3 Precedence: list List-Id: Gateway to the comp.lang.ada Usenet newsgroup List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Xref: archiver1.google.com comp.lang.ada:3290 Date: 2003-12-09T13:27:29-06:00 This is a multi-part message in MIME format. ------=_NextPart_000_04CB_01C3BE58.31BDD5F0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit The attached file is approaching ten years old, but is the latest one of which I know. The e-mail address of the author has changed in the meantime. He can be reached at Tucker Taft ----- Original Message ----- From: "J Quirce" Newsgroups: comp.lang.ada To: Sent: Tuesday, December 09, 2003 12:10 PM Subject: Free Ada parser > Hi, > > I am just joining the group after a quite long and discusting weg > search of any kind of "executable ada grammar". I mean, an Ada 95 one > ready for processing by Yacc, Bison or any other more or less > reasonable compiler compiler. > > Do you have any idea on where can I get it? > > Thanks, > > J. Quirce > _______________________________________________ > comp.lang.ada mailing list > comp.lang.ada@ada-france.org > http://www.ada-france.org/mailman/listinfo/comp.lang.ada > ------=_NextPart_000_04CB_01C3BE58.31BDD5F0 Content-Type: text/plain; name="grammar9x.y.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="grammar9x.y.txt" /******* A YACC grammar for Ada 9X *********************************/=0D /* Copyright (C) Intermetrics, Inc. 1994 Cambridge, MA USA */=0D /* Copying permitted if accompanied by this statement. */=0D /* Derivative works are permitted if accompanied by this statement.*/=0D /* This grammar is thought to be correct as of May 1, 1994 */=0D /* but as usual there is *no warranty* to that effect. */=0D /*******************************************************************/=0D =0D %token TIC=0D %token DOT_DOT=0D %token LT_LT=0D %token BOX=0D %token LT_EQ=0D %token EXPON=0D %token NE=0D %token GT_GT=0D %token GE=0D %token IS_ASSIGNED=0D %token RIGHT_SHAFT=0D %token ABORT=0D %token ABS=0D %token ABSTRACT=0D %token ACCEPT=0D %token ACCESS=0D %token ALIASED=0D %token ALL=0D %token AND=0D %token ARRAY=0D %token AT=0D %token BEGiN=0D %token BODY=0D %token CASE=0D %token CONSTANT=0D %token DECLARE=0D %token DELAY=0D %token DELTA=0D %token DIGITS=0D %token DO=0D %token ELSE=0D %token ELSIF=0D %token END=0D %token ENTRY=0D %token EXCEPTION=0D %token EXIT=0D %token FOR=0D %token FUNCTION=0D %token GENERIC=0D %token GOTO=0D %token IF=0D %token IN=0D %token IS=0D %token LIMITED=0D %token LOOP=0D %token MOD=0D %token NEW=0D %token NOT=0D %token NuLL=0D %token OF=0D %token OR=0D %token OTHERS=0D %token OUT=0D %token PACKAGE=0D %token PRAGMA=0D %token PRIVATE=0D %token PROCEDURE=0D %token PROTECTED=0D %token RAISE=0D %token RANGE=0D %token RECORD=0D %token REM=0D %token RENAMES=0D %token REQUEUE=0D %token RETURN=0D %token REVERSE=0D %token SELECT=0D %token SEPARATE=0D %token SUBTYPE=0D %token TAGGED=0D %token TASK=0D %token TERMINATE=0D %token THEN=0D %token TYPE=0D %token UNTIL=0D %token USE=0D %token WHEN=0D %token WHILE=0D %token WITH=0D %token XOR=0D %token char_lit=0D %token identifier=0D %token char_string=0D %token numeric_lit=0D =0D %{=0D %}=0D =0D %%=0D =0D goal_symbol : compilation=0D ;=0D =0D pragma : PRAGMA identifier ';'=0D | PRAGMA simple_name '(' pragma_arg_s ')' ';'=0D ;=0D =0D pragma_arg_s : pragma_arg=0D | pragma_arg_s ',' pragma_arg=0D ;=0D =0D pragma_arg : expression=0D | simple_name RIGHT_SHAFT expression=0D ;=0D =0D pragma_s :=0D | pragma_s pragma=0D ;=0D =0D decl : object_decl=0D | number_decl=0D | type_decl=0D | subtype_decl=0D | subprog_decl=0D | pkg_decl=0D | task_decl=0D | prot_decl=0D | exception_decl=0D | rename_decl=0D | generic_decl=0D | body_stub=0D | error ';'=0D ;=0D =0D object_decl : def_id_s ':' object_qualifier_opt object_subtype_def = init_opt ';'=0D ;=0D =0D def_id_s : def_id=0D | def_id_s ',' def_id=0D ;=0D =0D def_id : identifier=0D ;=0D =0D object_qualifier_opt :=0D | ALIASED=0D | CONSTANT=0D | ALIASED CONSTANT=0D ;=0D =0D object_subtype_def : subtype_ind=0D | array_type=0D ;=0D =0D init_opt :=0D | IS_ASSIGNED expression=0D ;=0D =0D number_decl : def_id_s ':' CONSTANT IS_ASSIGNED expression ';'=0D ;=0D =0D type_decl : TYPE identifier discrim_part_opt type_completion ';'=0D ;=0D =0D discrim_part_opt :=0D | discrim_part=0D | '(' BOX ')'=0D ;=0D =0D type_completion :=0D | IS type_def=0D ;=0D =0D type_def : enumeration_type =0D | integer_type=0D | real_type=0D | array_type=0D | record_type=0D | access_type=0D | derived_type=0D | private_type=0D ;=0D =0D subtype_decl : SUBTYPE identifier IS subtype_ind ';'=0D ;=0D =0D subtype_ind : name constraint=0D | name=0D ;=0D =0D constraint : range_constraint=0D | decimal_digits_constraint=0D ;=0D =0D decimal_digits_constraint : DIGITS expression range_constr_opt=0D ;=0D =0D derived_type : NEW subtype_ind=0D | NEW subtype_ind WITH PRIVATE=0D | NEW subtype_ind WITH record_def=0D | ABSTRACT NEW subtype_ind WITH PRIVATE=0D | ABSTRACT NEW subtype_ind WITH record_def=0D ;=0D =0D range_constraint : RANGE range=0D ;=0D =0D range : simple_expression DOT_DOT simple_expression=0D | name TIC RANGE=0D | name TIC RANGE '(' expression ')'=0D ;=0D =0D enumeration_type : '(' enum_id_s ')'=0D =0D enum_id_s : enum_id=0D | enum_id_s ',' enum_id=0D ;=0D =0D enum_id : identifier=0D | char_lit=0D ;=0D =0D integer_type : range_spec=0D | MOD expression=0D ;=0D =0D =0D range_spec : range_constraint=0D ;=0D =0D range_spec_opt :=0D | range_spec=0D ;=0D =0D real_type : float_type=0D | fixed_type=0D ;=0D =0D float_type : DIGITS expression range_spec_opt=0D ;=0D =0D fixed_type : DELTA expression range_spec=0D | DELTA expression DIGITS expression range_spec_opt=0D ;=0D =0D array_type : unconstr_array_type=0D | constr_array_type=0D ;=0D =0D unconstr_array_type : ARRAY '(' index_s ')' OF component_subtype_def=0D ;=0D =0D constr_array_type : ARRAY iter_index_constraint OF = component_subtype_def=0D ;=0D =0D component_subtype_def : aliased_opt subtype_ind=0D ;=0D =0D aliased_opt : =0D | ALIASED=0D ;=0D =0D index_s : index=0D | index_s ',' index=0D ;=0D =0D index : name RANGE BOX=0D ;=0D =0D iter_index_constraint : '(' iter_discrete_range_s ')'=0D ;=0D =0D iter_discrete_range_s : discrete_range=0D | iter_discrete_range_s ',' discrete_range=0D ;=0D =0D discrete_range : name range_constr_opt=0D | range=0D ;=0D =0D range_constr_opt :=0D | range_constraint=0D ;=0D =0D record_type : tagged_opt limited_opt record_def=0D ;=0D =0D record_def : RECORD pragma_s comp_list END RECORD=0D | NuLL RECORD=0D ;=0D =0D tagged_opt :=0D | TAGGED=0D | ABSTRACT TAGGED=0D ;=0D =0D comp_list : comp_decl_s variant_part_opt=0D | variant_part pragma_s=0D | NuLL ';' pragma_s=0D ;=0D =0D comp_decl_s : comp_decl=0D | comp_decl_s pragma_s comp_decl=0D ;=0D =0D variant_part_opt : pragma_s=0D | pragma_s variant_part pragma_s=0D ;=0D =0D comp_decl : def_id_s ':' component_subtype_def init_opt ';'=0D | error ';'=0D ;=0D =0D discrim_part : '(' discrim_spec_s ')'=0D ;=0D =0D discrim_spec_s : discrim_spec=0D | discrim_spec_s ';' discrim_spec=0D ;=0D =0D discrim_spec : def_id_s ':' access_opt mark init_opt=0D | error=0D ;=0D =0D access_opt :=0D | ACCESS=0D ;=0D =0D variant_part : CASE simple_name IS pragma_s variant_s END CASE ';'=0D ;=0D =0D variant_s : variant=0D | variant_s variant=0D ;=0D =0D variant : WHEN choice_s RIGHT_SHAFT pragma_s comp_list=0D ;=0D =0D choice_s : choice=0D | choice_s '|' choice=0D ;=0D =0D choice : expression=0D | discrete_with_range=0D | OTHERS=0D ;=0D =0D discrete_with_range : name range_constraint=0D | range=0D ;=0D =0D access_type : ACCESS subtype_ind=0D | ACCESS CONSTANT subtype_ind=0D | ACCESS ALL subtype_ind=0D | ACCESS prot_opt PROCEDURE formal_part_opt=0D | ACCESS prot_opt FUNCTION formal_part_opt RETURN mark=0D ;=0D =0D prot_opt :=0D | PROTECTED=0D ;=0D =0D decl_part :=0D | decl_item_or_body_s1=0D ;=0D =0D decl_item_s : =0D | decl_item_s1=0D ;=0D =0D decl_item_s1 : decl_item=0D | decl_item_s1 decl_item=0D ;=0D =0D decl_item : decl=0D | use_clause=0D | rep_spec=0D | pragma=0D ;=0D =0D decl_item_or_body_s1 : decl_item_or_body=0D | decl_item_or_body_s1 decl_item_or_body=0D ;=0D =0D decl_item_or_body : body=0D | decl_item=0D ;=0D =0D body : subprog_body=0D | pkg_body=0D | task_body=0D | prot_body=0D ;=0D =0D name : simple_name=0D | indexed_comp=0D | selected_comp=0D | attribute=0D | operator_symbol=0D ;=0D =0D mark : simple_name=0D | mark TIC attribute_id=0D | mark '.' simple_name=0D ;=0D =0D simple_name : identifier=0D ;=0D =0D compound_name : simple_name=0D | compound_name '.' simple_name=0D ;=0D =0D c_name_list : compound_name=0D | c_name_list ',' compound_name=0D ;=0D =0D used_char : char_lit=0D ;=0D =0D operator_symbol : char_string=0D ;=0D =0D indexed_comp : name '(' value_s ')'=0D ;=0D =0D value_s : value=0D | value_s ',' value=0D ;=0D =0D value : expression=0D | comp_assoc=0D | discrete_with_range=0D | error=0D ;=0D =0D selected_comp : name '.' simple_name=0D | name '.' used_char=0D | name '.' operator_symbol=0D | name '.' ALL=0D ;=0D =0D attribute : name TIC attribute_id=0D ;=0D =0D attribute_id : identifier=0D | DIGITS=0D | DELTA=0D | ACCESS=0D ;=0D =0D literal : numeric_lit=0D | used_char=0D | NuLL=0D ;=0D =0D aggregate : '(' comp_assoc ')'=0D | '(' value_s_2 ')'=0D | '(' expression WITH value_s ')'=0D | '(' expression WITH NuLL RECORD ')'=0D | '(' NuLL RECORD ')'=0D ;=0D =0D value_s_2 : value ',' value=0D | value_s_2 ',' value=0D ;=0D =0D comp_assoc : choice_s RIGHT_SHAFT expression=0D ;=0D =0D expression : relation=0D | expression logical relation=0D | expression short_circuit relation=0D ;=0D =0D logical : AND=0D | OR=0D | XOR=0D ;=0D =0D short_circuit : AND THEN=0D | OR ELSE=0D ;=0D =0D relation : simple_expression=0D | simple_expression relational simple_expression=0D | simple_expression membership range=0D | simple_expression membership name=0D ;=0D =0D relational : '=3D'=0D | NE=0D | '<'=0D | LT_EQ=0D | '>'=0D | GE=0D ;=0D =0D membership : IN=0D | NOT IN=0D ;=0D =0D simple_expression : unary term=0D | term=0D | simple_expression adding term=0D ;=0D =0D unary : '+'=0D | '-'=0D ;=0D =0D adding : '+'=0D | '-'=0D | '&'=0D ;=0D =0D term : factor=0D | term multiplying factor=0D ;=0D =0D multiplying : '*'=0D | '/'=0D | MOD=0D | REM=0D ;=0D =0D factor : primary=0D | NOT primary=0D | ABS primary=0D | primary EXPON primary=0D ;=0D =0D primary : literal=0D | name=0D | allocator=0D | qualified=0D | parenthesized_primary=0D ;=0D =0D parenthesized_primary : aggregate=0D | '(' expression ')'=0D ;=0D =0D qualified : name TIC parenthesized_primary=0D ;=0D =0D allocator : NEW name=0D | NEW qualified=0D ;=0D =0D statement_s : statement=0D | statement_s statement=0D ;=0D =0D statement : unlabeled=0D | label statement=0D ;=0D =0D unlabeled : simple_stmt=0D | compound_stmt=0D | pragma=0D ;=0D =0D simple_stmt : null_stmt=0D | assign_stmt=0D | exit_stmt=0D | return_stmt=0D | goto_stmt=0D | procedure_call=0D | delay_stmt=0D | abort_stmt=0D | raise_stmt=0D | code_stmt=0D | requeue_stmt=0D | error ';'=0D ;=0D =0D compound_stmt : if_stmt=0D | case_stmt=0D | loop_stmt=0D | block=0D | accept_stmt=0D | select_stmt=0D ;=0D =0D label : LT_LT identifier GT_GT=0D ;=0D =0D null_stmt : NuLL ';'=0D ;=0D =0D assign_stmt : name IS_ASSIGNED expression ';'=0D ;=0D =0D if_stmt : IF cond_clause_s else_opt END IF ';'=0D ;=0D =0D cond_clause_s : cond_clause=0D | cond_clause_s ELSIF cond_clause=0D ;=0D =0D cond_clause : cond_part statement_s=0D ;=0D =0D cond_part : condition THEN=0D ;=0D =0D condition : expression=0D ;=0D =0D else_opt :=0D | ELSE statement_s=0D ;=0D =0D case_stmt : case_hdr pragma_s alternative_s END CASE ';'=0D ;=0D =0D case_hdr : CASE expression IS=0D ;=0D =0D alternative_s :=0D | alternative_s alternative=0D ;=0D =0D alternative : WHEN choice_s RIGHT_SHAFT statement_s=0D ;=0D =0D loop_stmt : label_opt iteration basic_loop id_opt ';'=0D ;=0D =0D label_opt :=0D | identifier ':'=0D ;=0D =0D iteration :=0D | WHILE condition=0D | iter_part reverse_opt discrete_range=0D ;=0D =0D iter_part : FOR identifier IN=0D ;=0D =0D reverse_opt :=0D | REVERSE=0D ;=0D =0D basic_loop : LOOP statement_s END LOOP=0D ;=0D =0D id_opt :=0D | designator=0D ;=0D =0D block : label_opt block_decl block_body END id_opt ';'=0D ;=0D =0D block_decl :=0D | DECLARE decl_part=0D ;=0D =0D block_body : BEGiN handled_stmt_s=0D ;=0D =0D handled_stmt_s : statement_s except_handler_part_opt =0D ; =0D =0D except_handler_part_opt :=0D | except_handler_part=0D ;=0D =0D exit_stmt : EXIT name_opt when_opt ';'=0D ;=0D =0D name_opt :=0D | name=0D ;=0D =0D when_opt :=0D | WHEN condition=0D ;=0D =0D return_stmt : RETURN ';'=0D | RETURN expression ';'=0D ;=0D =0D goto_stmt : GOTO name ';'=0D ;=0D =0D subprog_decl : subprog_spec ';'=0D | generic_subp_inst ';'=0D | subprog_spec_is_push ABSTRACT ';'=0D ;=0D =0D subprog_spec : PROCEDURE compound_name formal_part_opt=0D | FUNCTION designator formal_part_opt RETURN name=0D | FUNCTION designator /* for generic inst and generic rename */=0D ;=0D =0D designator : compound_name=0D | char_string=0D ;=0D =0D formal_part_opt : =0D | formal_part=0D ;=0D =0D formal_part : '(' param_s ')'=0D ;=0D =0D param_s : param=0D | param_s ';' param=0D ;=0D =0D param : def_id_s ':' mode mark init_opt=0D | error=0D ;=0D =0D mode :=0D | IN=0D | OUT=0D | IN OUT=0D | ACCESS=0D ;=0D =0D subprog_spec_is_push : subprog_spec IS=0D ;=0D =0D subprog_body : subprog_spec_is_push=0D decl_part block_body END id_opt ';'=0D ;=0D =0D procedure_call : name ';'=0D ;=0D =0D pkg_decl : pkg_spec ';'=0D | generic_pkg_inst ';'=0D ;=0D =0D pkg_spec : PACKAGE compound_name IS =0D decl_item_s private_part END c_id_opt=0D ;=0D =0D private_part :=0D | PRIVATE decl_item_s=0D ;=0D =0D c_id_opt : =0D | compound_name=0D ;=0D =0D pkg_body : PACKAGE BODY compound_name IS=0D decl_part body_opt END c_id_opt ';'=0D ;=0D =0D body_opt :=0D | block_body=0D ;=0D =0D private_type : tagged_opt limited_opt PRIVATE=0D ;=0D =0D limited_opt :=0D | LIMITED=0D ;=0D =0D use_clause : USE name_s ';'=0D | USE TYPE name_s ';'=0D ;=0D =0D name_s : name=0D | name_s ',' name=0D ;=0D =0D rename_decl : def_id_s ':' object_qualifier_opt subtype_ind renames = ';'=0D | def_id_s ':' EXCEPTION renames ';'=0D | rename_unit=0D ;=0D =0D rename_unit : PACKAGE compound_name renames ';'=0D | subprog_spec renames ';'=0D | generic_formal_part PACKAGE compound_name renames ';'=0D | generic_formal_part subprog_spec renames ';'=0D ;=0D =0D renames : RENAMES name=0D ;=0D =0D task_decl : task_spec ';'=0D ;=0D =0D task_spec : TASK simple_name task_def=0D | TASK TYPE simple_name discrim_part_opt task_def=0D ;=0D =0D task_def :=0D | IS entry_decl_s rep_spec_s task_private_opt END id_opt=0D ;=0D =0D task_private_opt :=0D | PRIVATE entry_decl_s rep_spec_s=0D ;=0D =0D task_body : TASK BODY simple_name IS=0D decl_part block_body END id_opt ';'=0D ;=0D =0D prot_decl : prot_spec ';'=0D ;=0D =0D prot_spec : PROTECTED identifier prot_def=0D | PROTECTED TYPE simple_name discrim_part_opt prot_def=0D ;=0D =0D prot_def : IS prot_op_decl_s prot_private_opt END id_opt=0D ;=0D =0D prot_private_opt :=0D | PRIVATE prot_elem_decl_s =0D =0D =0D prot_op_decl_s : =0D | prot_op_decl_s prot_op_decl=0D ;=0D =0D prot_op_decl : entry_decl=0D | subprog_spec ';'=0D | rep_spec=0D | pragma=0D ;=0D =0D prot_elem_decl_s : =0D | prot_elem_decl_s prot_elem_decl=0D ;=0D =0D prot_elem_decl : prot_op_decl | comp_decl ;=0D =0D prot_body : PROTECTED BODY simple_name IS=0D prot_op_body_s END id_opt ';'=0D ;=0D =0D prot_op_body_s : pragma_s=0D | prot_op_body_s prot_op_body pragma_s=0D ;=0D =0D prot_op_body : entry_body=0D | subprog_body=0D | subprog_spec ';'=0D ;=0D =0D entry_decl_s : pragma_s=0D | entry_decl_s entry_decl pragma_s=0D ;=0D =0D entry_decl : ENTRY identifier formal_part_opt ';'=0D | ENTRY identifier '(' discrete_range ')' formal_part_opt ';'=0D ;=0D =0D entry_body : ENTRY identifier formal_part_opt WHEN condition = entry_body_part=0D | ENTRY identifier '(' iter_part discrete_range ')' =0D formal_part_opt WHEN condition entry_body_part=0D ;=0D =0D entry_body_part : ';'=0D | IS decl_part block_body END id_opt ';'=0D ;=0D =0D rep_spec_s :=0D | rep_spec_s rep_spec pragma_s=0D ;=0D =0D entry_call : procedure_call=0D ;=0D =0D accept_stmt : accept_hdr ';'=0D | accept_hdr DO handled_stmt_s END id_opt ';'=0D ;=0D =0D accept_hdr : ACCEPT entry_name formal_part_opt=0D ;=0D =0D entry_name : simple_name=0D | entry_name '(' expression ')'=0D ;=0D =0D delay_stmt : DELAY expression ';'=0D | DELAY UNTIL expression ';'=0D ;=0D =0D select_stmt : select_wait=0D | async_select=0D | timed_entry_call=0D | cond_entry_call=0D ;=0D =0D select_wait : SELECT guarded_select_alt or_select else_opt=0D END SELECT ';'=0D ;=0D =0D guarded_select_alt : select_alt=0D | WHEN condition RIGHT_SHAFT select_alt=0D ;=0D =0D or_select :=0D | or_select OR guarded_select_alt=0D ;=0D =0D select_alt : accept_stmt stmts_opt=0D | delay_stmt stmts_opt=0D | TERMINATE ';'=0D ;=0D =0D delay_or_entry_alt : delay_stmt stmts_opt=0D | entry_call stmts_opt=0D =0D async_select : SELECT delay_or_entry_alt=0D THEN ABORT statement_s=0D END SELECT ';'=0D ;=0D =0D timed_entry_call : SELECT entry_call stmts_opt =0D OR delay_stmt stmts_opt=0D END SELECT ';'=0D ;=0D =0D cond_entry_call : SELECT entry_call stmts_opt =0D ELSE statement_s=0D END SELECT ';'=0D ;=0D =0D stmts_opt :=0D | statement_s=0D ;=0D =0D abort_stmt : ABORT name_s ';'=0D ;=0D =0D compilation :=0D | compilation comp_unit=0D | pragma pragma_s=0D ;=0D =0D comp_unit : context_spec private_opt unit pragma_s=0D | private_opt unit pragma_s=0D ;=0D =0D private_opt :=0D | PRIVATE=0D ;=0D =0D context_spec : with_clause use_clause_opt=0D | context_spec with_clause use_clause_opt=0D | context_spec pragma=0D ;=0D =0D with_clause : WITH c_name_list ';'=0D ;=0D =0D use_clause_opt :=0D | use_clause_opt use_clause=0D ;=0D =0D unit : pkg_decl=0D | pkg_body=0D | subprog_decl=0D | subprog_body=0D | subunit=0D | generic_decl=0D | rename_unit=0D ;=0D =0D subunit : SEPARATE '(' compound_name ')'=0D subunit_body=0D ;=0D =0D subunit_body : subprog_body=0D | pkg_body=0D | task_body=0D | prot_body=0D ;=0D =0D body_stub : TASK BODY simple_name IS SEPARATE ';'=0D | PACKAGE BODY compound_name IS SEPARATE ';'=0D | subprog_spec IS SEPARATE ';'=0D | PROTECTED BODY simple_name IS SEPARATE ';'=0D ;=0D =0D exception_decl : def_id_s ':' EXCEPTION ';'=0D ;=0D =0D except_handler_part : EXCEPTION exception_handler=0D | except_handler_part exception_handler=0D ;=0D =0D exception_handler : WHEN except_choice_s RIGHT_SHAFT statement_s=0D | WHEN identifier ':' except_choice_s RIGHT_SHAFT statement_s=0D ;=0D =0D except_choice_s : except_choice=0D | except_choice_s '|' except_choice=0D ;=0D =0D except_choice : name=0D | OTHERS=0D ;=0D =0D raise_stmt : RAISE name_opt ';'=0D ;=0D =0D requeue_stmt : REQUEUE name ';'=0D | REQUEUE name WITH ABORT ';'=0D ;=0D =0D generic_decl : generic_formal_part subprog_spec ';'=0D | generic_formal_part pkg_spec ';'=0D ;=0D generic_formal_part : GENERIC=0D | generic_formal_part generic_formal=0D ;=0D =0D generic_formal : param ';'=0D | TYPE simple_name generic_discrim_part_opt IS generic_type_def ';'=0D | WITH PROCEDURE simple_name =0D formal_part_opt subp_default ';'=0D | WITH FUNCTION designator =0D formal_part_opt RETURN name subp_default ';'=0D | WITH PACKAGE simple_name IS NEW name '(' BOX ')' ';'=0D | WITH PACKAGE simple_name IS NEW name ';'=0D | use_clause=0D ;=0D =0D generic_discrim_part_opt :=0D | discrim_part=0D | '(' BOX ')'=0D ;=0D =0D subp_default :=0D | IS name=0D | IS BOX=0D ;=0D =0D generic_type_def : '(' BOX ')'=0D | RANGE BOX=0D | MOD BOX=0D | DELTA BOX=0D | DELTA BOX DIGITS BOX=0D | DIGITS BOX=0D | array_type=0D | access_type=0D | private_type=0D | generic_derived_type=0D ;=0D =0D generic_derived_type : NEW subtype_ind=0D | NEW subtype_ind WITH PRIVATE=0D | ABSTRACT NEW subtype_ind WITH PRIVATE=0D ;=0D =0D generic_subp_inst : subprog_spec IS generic_inst=0D ;=0D =0D generic_pkg_inst : PACKAGE compound_name IS generic_inst=0D ;=0D =0D generic_inst : NEW name=0D ;=0D =0D rep_spec : attrib_def=0D | record_type_spec=0D | address_spec=0D ;=0D =0D attrib_def : FOR mark USE expression ';'=0D ;=0D =0D record_type_spec : FOR mark USE RECORD align_opt comp_loc_s END RECORD = ';'=0D ;=0D =0D align_opt :=0D | AT MOD expression ';'=0D ;=0D =0D comp_loc_s :=0D | comp_loc_s mark AT expression RANGE range ';'=0D ;=0D =0D address_spec : FOR mark USE AT expression ';'=0D ;=0D =0D code_stmt : qualified ';'=0D ;=0D =0D %%=0D =0D ------=_NextPart_000_04CB_01C3BE58.31BDD5F0--