2013-03-07 12 views
5

to jest z internetowym Ada podręcznika: http://www.adaic.org/resources/add_content/standards/05rm/RM.pdf (rozdział 2,3)Ada literałów numerycznych i podkreślają

A decimal_literal is a numeric_literal in the conventional decimal notation (that is, the base is ten). 
Syntax 
decimal_literal ::= numeral [.numeral] [exponent] 
**numeral ::= digit {[underline] digit}** 
exponent ::= E [+] numeral | E – numeral 
digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 
An exponent for an integer literal shall not have a minus sign. 
Static Semantics 
**An underline character in a numeric_literal does not affect its meaning.** The letter E of an exponent can be 
written either in lower case or in upper case, with the same meaning. 

Jeśli robię

my_literal ::= 123_456; 

co robi podkreślenia (podkreślenie) oznacza? Mówi, że nie ma to wpływu na znaczenie. Więc po co to jest? Jestem pewna, że ​​istnieje prosta odpowiedź, ale czytanie i ponowna próba odpowiedzi nie pomogły mi.

Odpowiedz

7

To jest ten sam powód, powiedzmy, przecinkami (,) w walucie lub [innych dużych] liczbach: grupowanie. sposób:

Million : Constant:= 1_000_000; 

Ponadto można go używać w połączeniu z podstawą-ustawienia jako konfiguracji maskowania:

Type Bit is Range 1..8; 
SubType Byte is Interfaces.Unsigned_8; 
Type Masks is Array(Positive Range <>) of Byte; 

Mask_Map : Constant Masks(Bit):= 
    (
     2#0000_0001#, 
     2#0000_0010#, 
     2#0000_0100#, 
     2#0000_1000#, 
     2#0001_0000#, 
     2#0010_0000#, 
     2#0100_0000#, 
     2#1000_0000# 
    ); 

Następnie może by użyć Mask_Map i bitów wraz z or , and i xor do wykonywania operacji bitowych. Powyższa metoda może wydawać się nieco bardziej pracująca niż prosta definicja wielu stałych i bezpośrednio nimi manipulująca, ale jest bardziej elastyczna, ponieważ można później zmienić ją w funkcję i nie zmieniać żadnego kodu klienta, który mógłby dalej będą użyteczne, jeśli wynikiem tej funkcji jest sparametryzowana liczba całkowita, gdzie bit ma definicję 1..PARAMETER'Size.

+0

Czy to w całości dla czytelności programisty? –

+0

Tak. Ada miała łatwość konserwacji jako cel projektu. – Shark8

+0

Ty * musisz * zdawać sobie sprawę, że dwa kolejne podkreślenia są błędem. [IIRC] – Shark8