home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / ace.lng < prev    next >
Text File  |  1990-09-23  |  25KB  |  991 lines

  1. Σ≡«»≤≥
  2. «starting_menu»
  3. «compilation_unit»
  4. Σ«starting_menu»
  5. «simple_statement»
  6. «declarative_part»
  7. «compilation_unit»
  8. «pragma»
  9. «comment»
  10. ≡«INPUT_comment_text?» %1"Input comment"
  11. Σ«comment_text»
  12. «INPUT_comment_text?»
  13. «graphic_characters»
  14. ≡«comment» --«comment_text»
  15. ≡«INPUT_graphic_character?» %1"Input character"
  16. Σ«graphic_character»
  17. «INPUT_graphic_character?»
  18. «basic_graphic_character»
  19. «lower_case_letter»
  20. «other_special_character»
  21. Σ«digit»
  22. 0
  23. 1
  24. 2
  25. 3
  26. 4
  27. 5
  28. 6
  29. 7
  30. 8
  31. 9
  32. Σ«upper_case_letter»
  33. A
  34. B
  35. C
  36. D
  37. E
  38. F
  39. G
  40. H
  41. I
  42. J
  43. K
  44. L
  45. M
  46. N
  47. O
  48. P
  49. Q
  50. R
  51. S
  52. T
  53. U
  54. V
  55. W
  56. X
  57. Y
  58. Z
  59. Σ«lower_case_letter»
  60. a
  61. b
  62. c
  63. d
  64. e
  65. f
  66. g
  67. h
  68. i
  69. j
  70. k
  71. l
  72. m
  73. n
  74. o
  75. p
  76. q
  77. r
  78. s
  79. t
  80. u
  81. v
  82. w
  83. x
  84. y
  85. z
  86. Σ«basic_graphic_character»
  87. «upper_case_letter»
  88. «digit»
  89. «special_character»
  90. «space_character»
  91. ≡«space_character» ≤ ≥
  92. Σ«special_character»
  93. "
  94. #
  95. &
  96. '
  97. (
  98. )
  99. *
  100. +
  101. ,
  102. -
  103. .
  104. /
  105. :
  106. ;
  107. <
  108. =
  109. >
  110. _
  111. |
  112. Σ«other_special_character»
  113. !
  114. $
  115. %
  116. ?
  117. @
  118. [
  119. \
  120. ]
  121. ^
  122. `
  123. {
  124. }
  125. ~
  126. ≡«INPUT_identifier?» %1"Input identifier"
  127. Σ«identifier»
  128. «INPUT_identifier?»
  129. «letter»≤«more_identifier»≥
  130. Examples
  131. TBD
  132. a_more_readable_name
  133. Σ«more_identifier»
  134. «letter_or_digit»≤«more_identifier»≥
  135. _«letter_or_digit»≤«more_identifier»≥
  136. Σ«letter_or_digit»
  137. «letter»
  138. «digit»
  139. Σ«letter»
  140. «lower_case_letter»
  141. «upper_case_letter»
  142. ≡«INPUT_number?» %1"Input number"
  143. Σ«numeric_literal»
  144. «INPUT_number?»
  145. «decimal_literal»
  146. «based_literal»
  147. Σ«decimal_literal»
  148. «INPUT_number?»
  149. «integer»
  150. «integer».«integer»
  151. «integer»«exponent»
  152. «integer».«integer»«exponent»
  153. 1990
  154. 1_000_000
  155. 1E6
  156. 3.141516
  157. 0.123
  158. 1.2345e-7
  159. 16_777.001_001e+3
  160. Σ«integer»
  161. «INPUT_number?»
  162. «digit»≤«more_integer»≥
  163. 16
  164. 1_427
  165. Σ«more_integer»
  166. «digit»≤«more_integer»≥
  167. _«digit»≤«more_integer»≥
  168. Σ«exponent»
  169. E«integer»
  170. E+«integer»
  171. E-«integer»
  172. Σ«based_literal»
  173. «INPUT_number?»
  174. «base»#«based_integer»≤.«based_integer»≥#≤«exponent»≥
  175. 16#FFFF#
  176. 2#10110#e-5
  177. 16#f.001#
  178. ≡«base» «integer»
  179. Σ«based_integer»
  180. «INPUT_number?»
  181. «extended_digits»
  182. 144
  183. 1_011_111
  184. 7FFF
  185. Σ«extended_digits»
  186. «extended_digit»≤«extended_digits»≥
  187. _«extended_digit»≤«extended_digits»≥
  188. Σ«extended_digit»
  189. «digit»
  190. A
  191. B
  192. C
  193. D
  194. E
  195. F
  196. a
  197. b
  198. c
  199. d
  200. e
  201. f
  202. ≡«character_literal» '«graphic_character»'
  203. ≡«INPUT_string?» %1"Input string"
  204. Σ«string_literal»
  205. "«INPUT_string?»"
  206. ""
  207. "«graphic_characters»"
  208. "Example string ..."
  209. ≡«graphic_characters» «graphic_character»≤«graphic_characters»≥
  210. Σ«pragma»
  211. pragma controlled(«access_type_simple_name»);
  212. pragma elaborate(«library_unit_simple_name»);
  213. pragma inline(«subprogram_name»);
  214. pragma interface(«language_name», «subprogram_name»≤, «link_name»≥);
  215. pragma list(on);
  216. pragma list(off);
  217. pragma memory_size(«numeric_literal»);
  218. pragma optimize(time);
  219. pragma optimize(space);
  220. pragma pack(«record_or_array_type_simple_name»);
  221. pragma page;
  222. pragma priority(«static_simple_expression»);
  223. pragma shared(«variable_simple_name»);
  224. pragma storage_unit(«numeric_literal»);
  225. pragma suppress(«check_name», «suppress_name»);
  226. pragma system_name(«enumeration_literal»);
  227. pragma «identifier»≤(«argument_associations»)≥;
  228. ≡«access_type_simple_name» «simple_name»
  229. ≡«library_unit_simple_name» «simple_name»
  230. ≡«record_or_array_type_simple_name» «simple_name»
  231. ≡«variable_simple_name» «simple_name»
  232. Σ«language_name»
  233. assembly
  234. builtin
  235. internal
  236. microsoft_c
  237. Σ«check_name»
  238. access_check
  239. discriminant_check
  240. division_check
  241. elaboration_check
  242. index_check
  243. length_check
  244. overflow_check
  245. range_check
  246. storage_check
  247. ≡«suppress_name» «name»
  248. ≡«link_name» «string_literal»
  249. ≡«argument_associations»
  250. «argument_association»≤, «argument_associations»≥
  251. ≡«argument_identifier» «identifier»
  252. ≡«argument_association» ≤«argument_identifier» => ≥«expression»
  253. Σ«basic_declaration»
  254. «object_declaration»
  255. «number_declaration»
  256. «type_declaration»
  257. «subtype_declaration»
  258. «subprogram_declaration»
  259. «package_declaration»
  260. «task_declaration»
  261. «generic_declaration»
  262. «exception_declaration»
  263. «generic_instantiation»
  264. «renaming_declaration»
  265. «deferred_constant_declaration»
  266. Σ«object_declaration»
  267. «identifier_list» :≤ constant≥ «subtype_indication»≤ := «expression»≥;
  268. «identifier_list» :≤ constant≥ «constrained_array_def»≤ := «expression»≥;
  269. ≡«constrained_array_def» «constrained_array_definition»
  270. ≡«universal_static_expression» «expression»
  271. ≡«number_declaration» «identifier_list» : constant := «universal_static_expression»;
  272. ≡«identifier_list» «identifier»≤, «identifier_list»≥
  273. Σ«type_declaration»
  274. «full_type_declaration»
  275. «incomplete_type_declaration»
  276. «private_type_declaration»
  277. ≡«full_type_declaration» type «identifier»≤ «discriminant_part»≥ is «type_definition»;
  278. Σ«type_definition»
  279. «integer_type_definition»
  280. «real_type_definition»
  281. «enumeration_type_definition»
  282. «array_type_definition»
  283. «record_type_definition»
  284. «access_type_definition»
  285. «derived_type_definition»
  286. ≡«subtype_declaration» subtype «identifier» is «subtype_indication»;
  287. ≡«subtype_indication» «type_mark»≤ «constraint»≥
  288. Σ«subtype_name»
  289. «real_name»
  290. natural
  291. positive
  292. Σ«type_name»
  293. «real_name»
  294. boolean
  295. byte_integer
  296. character
  297. duration
  298. float
  299. integer
  300. long_integer
  301. string
  302. Σ«type_mark»
  303. «type_name»
  304. «subtype_name»
  305. Σ«constraint»
  306. «range_constraint»
  307. «floating_point_constraint»
  308. «fixed_point_constraint»
  309. «index_constraint»
  310. «discriminant_constraint»
  311. ≡«derived_type_definition» new «subtype_indication»
  312. ≡«range_constraint» range «range»
  313. Σ«range»
  314. «simple_expression» .. «simple_expression»
  315. «prefix»'range
  316. «prefix»'range(«universal_static_expression»)
  317. ≡«enumeration_type_definition» («enumeration_literals»)
  318. ≡«enumeration_literals» «enumeration_literal»≤, «enumeration_literals»≥
  319. Σ«enumeration_literal»
  320. «identifier»
  321. «character_literal»
  322. ≡«integer_type_definition» «range_constraint»
  323. Σ«real_type_definition»
  324. «floating_point_constraint»
  325. «fixed_point_constraint»
  326. ≡«floating_point_constraint» «floating_accuracy_definition»≤ «range_constraint»≥
  327. ≡«static_simple_expression» «simple_expression»
  328. ≡«floating_accuracy_definition» digits «static_simple_expression»
  329. ≡«fixed_point_constraint» «fixed_accuracy_definition»≤ «range_constraint»≥
  330. ≡«fixed_accuracy_definition» delta «static_simple_expression»
  331. Σ«array_type_definition»
  332. «unconstrained_array_definition»
  333. «constrained_array_definition»
  334. ≡«component_subtype_indication» «subtype_indication»
  335. ≡«unconstrained_array_definition» array(«index_subtype_definitions») of «component_subtype_indication»
  336. ≡«index_subtype_definitions» «index_subtype_definition»≤, «index_subtype_definitions»≥
  337. ≡«constrained_array_definition» array «index_constraint» of «component_subtype_indication»
  338. ≡«index_subtype_definition» «type_mark» range <>
  339. ≡«index_constraint» («discrete_ranges»)
  340. ≡«discrete_ranges» «discrete_range»≤, «discrete_ranges»≥
  341. ≡«discrete_subtype_indication» «subtype_indication»
  342. Σ«discrete_range»
  343. «range»
  344. «discrete_subtype_indication»
  345. ≡«record_type_definition»
  346.   record
  347.     «component_list»
  348.   end record
  349. Σ«component_list»
  350. «component_declarations»≤ «variant_part»≥
  351. «variant_part»
  352. null;
  353. ≡«component_declarations» «component_declaration»
  354. ≤«component_declarations»≥
  355. ≡«component_declaration» «identifier_list» : «component_subtype_definition»≤ := «expression»≥;
  356. ≡«component_subtype_definition» «subtype_indication»
  357. ≡«discriminant_part» («discriminant_specification»≤; «discriminant_specifications»≥)
  358. ≡«discriminant_specifications» «discriminant_specification»≤; «discriminant_specifications»≥
  359. ≡«discriminant_specification» «identifier_list» : «type_mark»≤ := «expression»≥
  360. ≡«discriminant_constraint» («discriminant_associations»)
  361. ≡«discriminant_associations» «discriminant_association» ≤, «discriminant_associations»≥
  362. ≡«discriminant_simple_name» «simple_name»
  363. ≡«discriminant_association» ≤«discriminant_simple_names» => ≥«expression»
  364. ≡«discriminant_simple_names» «discriminant_simple_name»≤ | «discriminant_simple_names»≥
  365. ≡«variant_part» case «discriminant_simple_name» is
  366.   «variants»
  367. end case;
  368. ≡«variants» «variant»
  369. ≤«variants»≥
  370. ≡«variant» when «choices» =>
  371.   «component_list»
  372. ≡«component_simple_name» «simple_name»
  373. ≡«choices» «choice»≤ | «choices»≥
  374. Σ«choice»
  375. «simple_expression»
  376. «discrete_range»
  377. others
  378. «component_simple_name»
  379. ≡«access_type_definition» access «subtype_indication»
  380. ≡«incomplete_type_declaration» type «identifier»≤ «discriminant_part»≥;
  381. ≡«declarative_part» ≤«basic_declarative_items»≥
  382. ≤«later_declarative_items»≥
  383. ≡«basic_declarative_items» «basic_declarative_item»
  384. ≤«basic_declarative_items»≥
  385. ≡«later_declarative_items» «later_declarative_item»
  386. ≤«later_declarative_items»≥
  387. Σ«basic_declarative_item»
  388. «basic_declaration»
  389. «representation_clause»
  390. «use_clause»
  391. Σ«later_declarative_item»
  392. «body»
  393. «subprogram_declaration»
  394. «package_declaration»
  395. «task_declaration»
  396. «generic_declaration»
  397. «use_clause»
  398. «generic_instantiation»
  399. Σ«body»
  400. «proper_body»
  401. «body_stub»
  402. Σ«proper_body»
  403. «subprogram_body»
  404. «package_body»
  405. «task_body»
  406. Σ«name»
  407. «simple_name»
  408. «character_literal»
  409. «operator_symbol»
  410. «indexed_component»
  411. «slice»
  412. «selected_component»
  413. «attribute»
  414. Σ«real_name»
  415. «simple_name»
  416. «real_name».«simple_name»
  417. ≡«simple_name» «identifier»
  418. Σ«prefix»
  419. «name»
  420. «function_call»
  421. ≡«indexed_component» «prefix»(«expressions»)
  422. ≡«expressions» «expression»≤, «expressions»≥
  423. ≡«slice» «prefix»(«discrete_range»)
  424. ≡«selected_component» «prefix».«selector»
  425. Σ«selector»
  426. «simple_name»
  427. «character_literal»
  428. «operator_symbol»
  429. all
  430. ≡«attribute» «prefix»'«attribute_designator»
  431. Σ«attribute_designator»
  432. address
  433. aft
  434. base
  435. callable
  436. constrained
  437. count
  438. delta
  439. digits
  440. emax
  441. epsilon
  442. first
  443. first(«universal_static_expression»)
  444. first_bit
  445. fore
  446. image(«expression»)
  447. large
  448. last
  449. last(«universal_static_expression»)
  450. last_bit
  451. length
  452. length(«universal_static_expression»)
  453. locoffset
  454. machine_emax
  455. machine_emin
  456. machine_mantissa
  457. machine_overflows
  458. machine_radix
  459. machine_rounds
  460. mantissa
  461. pos(«expression»)
  462. position
  463. pred(«expression»)
  464. range
  465. range(«universal_static_expression»)
  466. safe_emax
  467. safe_large
  468. safe_small
  469. size
  470. small
  471. storage_size
  472. succ(«expression»)
  473. terminated
  474. val(«expression»)
  475. value(«expression»)
  476. width
  477. ≡«aggregate» («component_associations»)
  478. ≡«component_associations» «component_association»≤, «component_associations»≥
  479. ≡«component_association» ≤«choices» => ≥«expression»
  480. ≡«INPUT_expression?» %1"Input expression"
  481. Σ«expression»
  482. «INPUT_expression?»
  483. «relation»
  484. «relation» and «and_expression»
  485. «relation» and then «and_then_expression»
  486. «relation» or «or_expression»
  487. «relation» or else «or_else_expression»
  488. «relation» xor «xor_expression»
  489. Σ«and_expression»
  490. «relation»
  491. «relation» and «and_expression»
  492. Σ«and_then_expression»
  493. «relation»
  494. «relation» and then «and_then_expression»
  495. Σ«or_expression»
  496. «relation»
  497. «relation» or «or_expression»
  498. Σ«or_else_expression»
  499. «relation»
  500. «relation» or else «or_else_expression»
  501. Σ«xor_expression»
  502. «relation»
  503. «relation» xor «xor_expression»
  504. Σ«relation»
  505. «simple_expression»
  506. «simple_expression» = «simple_expression»
  507. «simple_expression» /= «simple_expression»
  508. «simple_expression» < «simple_expression»
  509. «simple_expression» <= «simple_expression»
  510. «simple_expression» > «simple_expression»
  511. «simple_expression» >= «simple_expression»
  512. «simple_expression» ≤not ≥in «range»
  513. «simple_expression» ≤not ≥in «type_mark»
  514. ≡«INPUT_simple_expression?» %1"Input simple expression"
  515. Σ«simple_expression»
  516. «INPUT_simple_expression?»
  517. «binary_adding_expression»
  518. +«binary_adding_expression»
  519. -«binary_adding_expression»
  520. Σ«binary_adding_expression»
  521. «term»
  522. «term» + «binary_adding_expression»
  523. «term» - «binary_adding_expression»
  524. «term» & «binary_adding_expression»
  525. Σ«term»
  526. «factor»
  527. «factor» * «term»
  528. «factor» / «term»
  529. «factor» mod «term»
  530. «factor» rem «term»
  531. Σ«factor»
  532. «primary»
  533. «primary» ** «primary»
  534. abs «primary»
  535. not «primary»
  536. Σ«primary»
  537. «name»
  538. «numeric_literal»
  539. «string_literal»
  540. «function_call»
  541. («expression»)
  542. «aggregate»
  543. «allocator»
  544. null
  545. «qualified_expression»
  546. «type_conversion»
  547. ≡«type_conversion» «type_mark»(«expression»)
  548. Σ«qualified_expression»
  549. «type_mark»'(«expression»)
  550. «type_mark»'«aggregate»
  551. Σ«allocator»
  552. new «subtype_indication»
  553. new «qualified_expression»
  554. ≡«sequence_of_statements» «statement»
  555. ≤«sequence_of_statements»≥
  556. Σ«statement»
  557. «simple_statement»
  558. «labeled_simple_statement»
  559. ≡«labeled_simple_statement» «labels»
  560. «simple_statement»
  561. ≡«labels» «label»
  562. ≤«labels»≥
  563. Σ«simple_statement»
  564. «assignment_statement»
  565. «if_statement»
  566. «procedure_call_statement»
  567. «while_statement»
  568. «for_statement»
  569. «loop_statement»
  570. «return_statement»
  571. «case_statement»
  572. «block_statement»
  573. «raise_statement»
  574. «exit_statement»
  575. «null_statement»
  576. «delay_statement»
  577. «accept_statement»
  578. «entry_call_statement»
  579. «select_statement»
  580. «abort_statement»
  581. «code_statement»
  582. «goto_statement»
  583. ≡«label_simple_name» «simple_name»
  584. ≡«label» <<«label_simple_name»>>
  585. ≡«null_statement» null;
  586. ≡«variable_name» «real_name»
  587. ≡«assignment_statement» «variable_name» := «expression»;
  588. ≡«if_statement» if «condition» then
  589.   «sequence_of_statements»
  590. ≤«elsif_clause»≥
  591. ≤«else_clause»≥
  592. end if;
  593. ≡«elsif_clause» elsif «condition» then
  594.   «sequence_of_statements»
  595. ≤«elsif_clause»≥
  596. ≡«else_clause» else
  597.   «sequence_of_statements»
  598. ≡«boolean_expression» «expression»
  599. ≡«condition» «boolean_expression»
  600. ≡«case_statement» case «expression» is
  601.   «case_statement_alternatives»
  602. end case;
  603. ≡«case_statement_alternatives» «case_statement_alternative»
  604. ≤«case_statement_alternatives»≥
  605. ≡«case_statement_alternative» when «case_choices» =>
  606.   «sequence_of_statements»
  607. ≡«case_choices» «case_choice»≤ | «case_choices»≥
  608. Σ«case_choice»
  609. «simple_expression»
  610. «discrete_range»
  611. others
  612. Σ«loop_statement»
  613. «unnamed_loop_statement»
  614. «named_loop_statement»
  615. ≡«unnamed_loop_statement» loop
  616.   «sequence_of_statements»
  617. end loop;
  618. ≡«named_loop_statement» %1"Input loop simple name":
  619.   loop
  620.     «sequence_of_statements»
  621.   end loop %1;
  622. Σ«while_statement»
  623. «unnamed_while_statement»
  624. «named_while_statement»
  625. ≡«unnamed_while_statement» while «condition» loop
  626.   «sequence_of_statements»
  627. end loop;
  628. ≡«named_while_statement» %1"Input loop simple name":
  629.   while «condition» loop
  630.     «sequence_of_statements»
  631.   end loop %1;
  632. Σ«for_statement»
  633. «unnamed_for_statement»
  634. «named_for_statement»
  635. ≡«unnamed_for_statement» for «loop_parameter_specification» loop
  636.   «sequence_of_statements»
  637. end loop;
  638. ≡«named_for_statement» %1"Input loop simple name":
  639.   for «loop_parameter_specification» loop
  640.     «sequence_of_statements»
  641.   end loop %1;
  642. ≡«loop_parameter_specification» «identifier» in ≤reverse ≥«discrete_range»
  643. ≡«block_simple_name» «simple_name»
  644. Σ«block_statement»
  645. «unnamed_block_statement»
  646. «named_block_statement»
  647. ≡«unnamed_block_statement» ≤«declarative_section»≥
  648. begin
  649.   «sequence_of_statements»
  650. ≤«exception_handler_section»≥
  651. end;
  652. ≡«named_block_statement» %1"Input loop simple name":
  653.   ≤«declarative_section»≥
  654.   begin
  655.     «sequence_of_statements»
  656.   ≤«exception_handler_section»≥
  657.   end %1;
  658. ≡«declarative_section» declare
  659.   «declarative_part»
  660. ≡«exception_handler_section» exception
  661.   «exception_handlers»
  662. ≡«exception_handlers» «exception_handler»
  663. ≤«exception_handlers»≥
  664. ≡«loop_name» «real_name»
  665. ≡«exit_statement» exit≤ «loop_name»≥≤ when «condition»≥;
  666. ≡«return_statement» return≤ «expression»≥;
  667. ≡«label_name» «real_name»
  668. ≡«goto_statement» goto «label_name»;
  669. ≡«subprogram_declaration» «subprogram_specification»;
  670. Σ«subprogram_specification»
  671. procedure «identifier»≤«formal_part»≥
  672. function «designator»≤«formal_part»≥ return «type_mark»
  673. Σ«designator»
  674. «identifier»
  675. «operator_symbol»
  676. Σ«operator_symbol»
  677. "and"
  678. "or"
  679. "xor"
  680. "="
  681. "/="
  682. "<"
  683. "<="
  684. ">"
  685. ">="
  686. "+"
  687. "-"
  688. "&"
  689. "*"
  690. "/"
  691. "mod"
  692. "rem"
  693. "**"
  694. "abs"
  695. "not"
  696. ≡«formal_part» («parameter_specifications»)
  697. ≡«parameter_specifications» «parameter_specification»≤; «parameter_specifications»≥
  698. ≡«parameter_specification» «identifier_list» : «mode» «type_mark»≤ := «expression»≥
  699. Σ«mode»
  700. ≤in≥
  701. in out
  702. out
  703. Σ«subprogram_body»
  704. «procedure_body»
  705. «function_body»
  706. ≡«procedure_body» procedure %1"Input procedure identifier"≤«formal_part»≥ is
  707.   ≤«declarative_part»≥
  708. begin
  709.   «sequence_of_statements»
  710. ≤«exception_handler_section»≥
  711. end %1;
  712. ≡«function_body» function %1"Input function designator"≤«formal_part»≥ return «type_mark» is
  713.   ≤«declarative_part»≥
  714. begin
  715.   «sequence_of_statements»
  716. ≤«exception_handler_section»≥
  717. end %1;
  718. ≡«procedure_name» «real_name»
  719. ≡«procedure_call_statement» «procedure_name»≤«actual_parameter_part»≥;
  720. ≡«function_name» «subprogram_name»
  721. ≡«function_call» «function_name»≤«actual_parameter_part»≥
  722. ≡«actual_parameter_part» («parameter_associations»)
  723. ≡«parameter_associations» «parameter_association»≤, «parameter_associations»≥
  724. ≡«parameter_association» ≤«formal_parameter» => ≥«actual_parameter»
  725. ≡«parameter_simple_name» «simple_name»
  726. ≡«formal_parameter» «parameter_simple_name»
  727. Σ«actual_parameter»
  728. «expression»
  729. «variable_name»
  730. «type_mark»(«variable_name»)
  731. ≡«package_declaration» «package_specification»;
  732. ≡«package_simple_name» «simple_name»
  733. ≡«package_specification» package %1"Package identifier" is
  734.   ≤«basic_declarative_items»≥
  735. ≤«private_part»≥
  736. end %1
  737. ≡«private_part» private
  738.   ≤«basic_declarative_items»≥
  739. ≡«package_body» package body %1"Package identifier" is
  740.   ≤«declarative_part»≥
  741. ≤«package_body_statements»≥
  742. end %1;
  743. ≡«package_body_statements» begin
  744.   «sequence_of_statements»
  745. ≤«exception_handler_section»≥
  746. ≡«private_type_declaration» type «identifier»≤ «discriminant_part»≥ is≤ limited≥ private;
  747. ≡«deferred_constant_declaration» «identifier_list» : constant «type_mark»;
  748. ≡«INPUT_package_name?» %1"Input package name"
  749. Σ«package_name»
  750. «INPUT_package_name?»
  751. «real_name»
  752. ascii
  753. calendar
  754. direct_io
  755. io_exceptions
  756. machine_code
  757. sequential_io
  758. standard
  759. system
  760. text_io
  761. unchecked_conversion
  762. unchecked_deallocation
  763. ≡«use_clause» use «package_names»;
  764. ≡«package_names» «package_name»≤, «package_names»≥
  765. Σ«exception_name»
  766. «real_name»
  767. constraint_error
  768. numeric_error
  769. program_error
  770. storage_error
  771. tasking_error
  772. ≡«object_name» «real_name»
  773. ≡«subprogram_or_entry_name» «subprogram_name»
  774. Σ«renaming_declaration»
  775. «identifier» : «type_mark» renames «object_name»;
  776. «identifier» : exception renames «exception_name»;
  777. package «identifier» renames «package_name»;
  778. «subprogram_specification» renames «subprogram_or_entry_name»;
  779. ≡«task_declaration» «task_specification»;
  780. ≡«task_simple_name» «simple_name»
  781. Σ«task_specification»
  782. «task_with_entries»
  783. «task_without_entries»
  784. ≡«task_without_entries» task ≤type≥ %1"Input task identifier"
  785. ≡«task_with_entries» task ≤type≥ %1"Input task identifier" is
  786.   ≤«entry_declarations»≥
  787.   ≤«address_clauses»≥
  788. end %1
  789. ≡«entry_declarations» «entry_declaration»
  790. ≤«entry_declarations»≥
  791. ≡«address_clauses» «address_clause»
  792. ≤«address_clauses»≥
  793. ≡«task_body» task body %1"Input task identifier" is
  794.   ≤«declarative_part»≥
  795. begin
  796.   «sequence_of_statements»
  797. ≤«exception_handler_section»≥
  798. end %1;
  799. ≡«entry_declaration» entry «identifier»≤(«discrete_range»)≥≤«formal_part»≥;
  800. ≡«entry_name» «real_name»
  801. ≡«entry_call_statement» «entry_name»≤«actual_parameter_part»≥;
  802. ≡«entry_simple_name» «simple_name»
  803. Σ«accept_statement»
  804. «accept_with_do_part»
  805. «accept_without_do_part»
  806. ≡«accept_with_do_part» accept %1"Input entry identifier"≤(«entry_index»)≥≤«formal_part»≥ do
  807.   «sequence_of_statements»
  808. end %1;
  809. ≡«accept_without_do_part» accept «entry_simple_name»≤(«entry_index»)≥≤«formal_part»≥;
  810. ≡«entry_index» «expression»
  811. ≡«delay_statement» delay «simple_expression»;
  812. Σ«select_statement»
  813. «selective_wait»
  814. «conditional_entry_call»
  815. «timed_entry_call»
  816. ≡«selective_wait» select
  817.   «select_alternative»
  818. ≤«selective_wait_or_alternatives»≥
  819. ≤«selective_wait_else_alternative»≥
  820. end select;
  821. ≡«selective_wait_or_alternatives» or
  822.   «select_alternative»
  823. ≤«selective_wait_or_alternatives»≥
  824. ≡«selective_wait_else_alternative» else
  825.   «sequence_of_statements»
  826. ≡«select_alternative» ≤when «condition» =>≥
  827.   «selective_wait_alternative»
  828. Σ«selective_wait_alternative»
  829. «accept_alternative»
  830. «delay_alternative»
  831. «terminate_alternative»
  832. ≡«accept_alternative» «accept_statement»
  833. ≤«sequence_of_statements»≥
  834. ≡«delay_alternative» «delay_statement»
  835. ≤«sequence_of_statements»≥
  836. ≡«terminate_alternative» terminate;
  837. ≡«conditional_entry_call» select
  838.   «entry_call_statement»
  839.   ≤«sequence_of_statements»≥
  840. else
  841.   «sequence_of_statements»
  842. end select;
  843. ≡«timed_entry_call» select
  844.   «entry_call_statement»
  845.   ≤«sequence_of_statements»≥
  846. or
  847.   «delay_alternative»
  848. end select;
  849. ≡«task_name» «real_name»
  850. Σ«abort_statement» abort «task_names»;
  851. ≡«task_names» «task_name»≤, «task_names»≥
  852. Σ«compilation»
  853. «compilation_unit»
  854. «compilation_units»
  855. Σ«compilation_units»
  856. «compilation_unit»
  857.  
  858. «compilation_units»
  859. ≡«compilation_unit» ≤«context_clause»≥
  860. «library_or_secondary_unit»
  861. Σ«library_or_secondary_unit»
  862. «subprogram_body»
  863. «subprogram_declaration»
  864. «package_declaration»
  865. «package_body»
  866. «generic_declaration»
  867. «generic_instantiation»
  868. «subunit»
  869. ≡«context_clause» «with_clause»
  870. ≤«use__clause»≥
  871. ≤«context_clauses»≥
  872. ≡«context_clauses»
  873. ≤«with_clause»≥
  874. ≤«use__clause»≥
  875. ≤«context_clauses»≥
  876. ≡«INPUT_package_identifier?» %1"Input package identifier"
  877. Σ«unit_simple_name»
  878. «INPUT_package_identifier?»
  879. «simple_name»
  880. ascii
  881. calendar
  882. direct_io
  883. io_exceptions
  884. machine_code
  885. sequential_io
  886. standard
  887. system
  888. text_io
  889. unchecked_conversion
  890. unchecked_deallocation
  891. ≡«use__clause» use «unit_simple_names»;
  892. ≡«with_clause» with «unit_simple_names»;
  893. ≡«unit_simple_names» «unit_simple_name»≤, «unit_simple_names»≥
  894. Σ«body_stub»
  895. «subprogram_specification» is separate;
  896. package body «package_simple_name» is separate;
  897. task body «task_simple_name» is separate;
  898. ≡«parent_unit_name» «real_name»
  899. ≡«subunit» separate(«parent_unit_name»)
  900. «proper_body»
  901. ≡«exception_declaration» «identifier_list» : exception;
  902. ≡«exception_handler» when «exception_choices» =>
  903.   «sequence_of_statements»
  904. ≡«exception_choices» «exception_choice»≤ | «exception_choices»≥
  905. Σ«exception_choice»
  906. «exception_name»
  907. others
  908. ≡«raise_statement» raise≤ «exception_name»≥;
  909. ≡«generic_declaration» «generic_specification»;
  910. Σ«generic_specification»
  911. «generic_subprogram_specification»
  912. «generic_package_specification»
  913. ≡«generic_subprogram_specification»
  914. «generic_formal_part»
  915. «subprogram_specification»
  916. ≡«generic_package_specification»
  917. «generic_formal_part»
  918. «package_specification»
  919. ≡«generic_formal_part» generic
  920.   ≤«generic_parameter_declarations»≥
  921. ≡«generic_parameter_declarations» «generic_parameter_declaration»
  922. ≤«generic_parameter_declarations»≥
  923. Σ«generic_parameter_declaration»
  924. «identifier_list» : ≤in ≤out≥≥ «type_mark»≤ := «expression»≥;
  925. type «identifier» is «generic_type_definition»;
  926. «private_type_declaration»
  927. with «subprogram_specification»≤ is «subprogram_name»≥;
  928. with «subprogram_specification»≤ is <>≥;
  929. Σ«generic_type_definition»
  930. (<>)
  931. range <>
  932. digits <>
  933. delta <>
  934. «array_type_definition»
  935. «access_type_definition»
  936. ≡«generic_function_name» «subprogram_name»
  937. ≡«generic_package_name» «real_name»
  938. ≡«generic_procedure_name» «real_name»
  939. Σ«generic_instantiation»
  940. package «identifier» is new «generic_package_name»≤«generic_actual_part»≥;
  941. procedure «identifier» is new «generic_procedure_name»≤«generic_actual_part»≥;
  942. function «designator» is new «generic_function_name»≤«generic_actual_part»≥;
  943. ≡«generic_actual_part» («generic_associations»)
  944. ≡«generic_associations» «generic_association»≤, «generic_associations»≥
  945. ≡«generic_association» ≤«generic_formal_parameter» => ≥«generic_actual_parameter»
  946. Σ«generic_formal_parameter»
  947. «parameter_simple_name»
  948. «operator_symbol»
  949. Σ«subprogram_name»
  950. «simple_name»
  951. «real_name».«simple_name»
  952. «operator_symbol»
  953. Σ«generic_actual_parameter»
  954. «expression»
  955. «variable_name»
  956. «subprogram_name»
  957. «entry_name»
  958. «type_mark»
  959. Σ«representation_clause»
  960. «type_representation_clause»
  961. «address_clause»
  962. Σ«type_representation_clause»
  963. «length_clause»
  964. «enumeration_representation_clause»
  965. «record_representation_clause»
  966. Σ«length_clause»
  967. for «integer_type_name»'size use «simple_expression»;
  968. for «access_type_name»'storage_size use «simple_expression»;
  969. for «task_type_name»'storage_size use «simple_expression»;
  970. for «fixed_point_type_name»'small use «simple_expression»;
  971. ≡«access_type_name» «real_name»
  972. ≡«integer_type_name» «real_name»
  973. ≡«task_type_name» «real_name»
  974. ≡«fixed_point_type_name» «real_name»
  975. ≡«type_simple_name» «simple_name»
  976. ≡«enumeration_representation_clause» for «type_simple_name» use «aggregate»;
  977. ≡«record_representation_clause» for «type_simple_name» use
  978.   record ≤«alignment_clause»≥
  979.     ≤«component_clauses»≥
  980.   end record;
  981. Σ«component_clauses»
  982. «component_clause»
  983. «component_clause» «component_clauses»
  984. ≡«alignment_clause» at mod «static_simple_expression»;
  985. ≡«component_name» «real_name»
  986. ≡«static_range» «range»
  987. ≡«component_clause» «component_name» at «static_simple_expression» range «static_range»;
  988. ≡«address_clause» for «simple_name» use at «simple_expression»;
  989. ≡«record_aggregate» «aggregate»
  990. ≡«code_statement» «type_mark»'«record_aggregate»;
  991.