+
Point of view
All features
expanded class NUMBER_TOOLS
Summary
This class provides abstract creation functions for NUMBERs as well as some other useful tools for NUMBERs.
Because this class is expanded, one may simply declare some entity of type NUMBER_TOOLS to use those NUMBER tools. One may also inherit this class in order to use those tools as well.
Direct parents
Insert list: ANY
Overview
Features
{ANY}
{}
from_integer (n: INTEGER_32): NUMBER
effective function
{ANY}
from_integer_64 (n: INTEGER_64): NUMBER
effective function
{ANY}
Uses value n to create a new NUMBER.
ensure
  • Result.to_integer_64 = n
from_string (formula: ABSTRACT_STRING): NUMBER
effective function
{ANY}
Parse the contents of formula to create a new NUMBER.
If some error occurs (like for example a division by zero), the Result is Void and the error report is left in the parser_buffer.
require ensure
from_input_stream (input: INPUT_STREAM): NUMBER
effective function
{ANY}
Create a number from a file or standard input
require
  • input.is_connected
ensure
is_number (formula: ABSTRACT_STRING): BOOLEAN
effective function
{ANY}
Is the formula a correct notation to create a NUMBER ? Actually, any correct formula using a combination of literal integer constants with + - * / () and ! is a correct notation to create a NUMBER.
Traditional priority rules are used for operators and the ! character denote the factorial computation. Here is the BNF grammar used:
 E0 = E1 R1
 E1 = E2 R2
 E2 = E3 R3
 E3 = "+" E3 | "-" E3 | "(" E0 ")" | "constant"
 R1 = "+" E1 R1 | "-" E1 R1 | ^
 R2 = "*" E2 R2 | "/" E2 R2 | ^
 R3 = "!" | ^
require
  • not formula.is_empty
ensure
parser_buffer: MINI_PARSER_BUFFER
once function
{ANY}
This once function gives access to the unique parser_buffer to allow the memorization of the Current position and the memorization of the last error message.
parse_e0: BOOLEAN
effective function
{}
parse_e1: BOOLEAN
effective function
{}
parse_e2: BOOLEAN
effective function
{}
parse_e3: BOOLEAN
effective function
{}
parse_r1: BOOLEAN
effective function
{}
parse_r2: BOOLEAN
effective function
{}
parse_r3
effective procedure
{}
parse_constant: BOOLEAN
effective function
{}
parse_create_e0: NUMBER
effective function
{}
parse_create_e1: NUMBER
effective function
{}
parse_create_e2: NUMBER
effective function
{}
parse_create_e3: NUMBER
effective function
{}
parse_create_r1 (left: NUMBER): NUMBER
effective function
{}
parse_create_r2 (left: NUMBER): NUMBER
effective function
{}
parse_create_r3 (left: NUMBER): NUMBER
effective function
{}
parse_create_constant: NUMBER
effective function
{}
ensure
  • Result /= Void
Integer_expected: STRING
is "Integer constant expected."
constant attribute
{}