Cours 1: BNF
Objectif: lire la grammaire Ada. Identificateur. Littéral numérique.
Extrait du manuel de référence (RM95):
identifier ::=
identifier_letter {[underline] letter_or_digit}
letter_or_digit ::= identifier_letter | digit
La notation BNF utilise des méta-caractères.
En voici la liste avec leur signification:
[ optionnel ]
{ zero_occurrence_au_moins }
choix_1 | choix_2 | choix_3
Remarques sur la règle de réécriture précédente:
- Un identificateur commence par une lettre.
- Un identificateur se termine par une lettre ou un chiffre.
- Un identificateur ne commence pas par un caractère souligné.
- Un identificateur ne se termine pas par un caractère souligné.
- Un caractère autre qu'une lettre, un chiffre ou un souligné fait partie de l'élément lexical suivant.
- Tous les caractères sont significatifs.
- On ne distingue pas les majuscules des minuscules.
Extrait du manuel de référence (RM95):
Examples of identifiers:
Count X Get_Symbol Ethelyn Marion
Snobol_4 X1 Page_Count Store_Next_Item
Contre-exemples:
4X _x x_ lettre-ou-chiffre
lettre__ou__chiffre
Extrait du manuel de référence (RM95):
numeric_literal ::= decimal_literal | based_literal
decimal_literal ::= numeral [.numeral] [exponent]
numeral ::= digit {[underline] digit}
exponent ::= E [+] numeral | E - numeral
Remarques sur les littéraux numériques en base 10 (décimaux):
- Sans partie fractionnaire, un littéral numérique est un entier.
- Avec partie fractionnaire, même nulle, un littéral numérique est un réel.
- Un entier ne peut avoir un exposant négatif.
- L'exposant est une puissance de 10 (1E2 vaut 100; 1.0E-2 vaut 0.01).
Extrait du manuel de référence (RM95):
Examples of decimal literals:
12 0 1E6 123_456 -- integer literals
12.0 0.0 0.456 3.14159_26 -- real literals
Contre-exemples:
0. . .0 1,2 1E-1 E2
Extrait du manuel de référence (RM95):
based_literal ::=
base # based_numeral [.based_numeral] # [exponent]
base ::= numeral
based_numeral ::=
extended_digit {[underline] extended_digit}
extended_digit ::= digit | A | B | C | D | E | F
Remarques sur les littéraux numériques basés:
- Les chiffres à l'extérieur des # sont en base 10.
- Les chiffres à l'intérieur des # sont basés.
- La base est entre 2 et 16.
- Chaque chiffre basé du littéral doit être inférieur à la base.
- L'exposant représente une puissance de la base.
Extrait du manuel de référence (RM95):
Examples of based literals:
2#1111_1111# 16#FF# 016#0ff# -- integer literals of value 255
16#E#E1 2#1110_0000# -- integer literals of value 224
16#F.FF#E+2 2#1.1111_1111_1110#E11 -- real literals of value 4095.0