How to resolve the algorithm Literals/Floating point step by step in the Python programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Literals/Floating point step by step in the Python programming language
Table of Contents
Problem Statement
Programming languages have different ways of expressing floating-point literals.
Show how floating-point literals can be expressed in your language: decimal or other bases, exponential notation, and any other special features. You may want to include a regular expression or BNF/ABNF/EBNF defining allowable formats for your language.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Literals/Floating point step by step in the Python programming language
Lexical Analysis with Lex
This code defines the lexical grammar for a simple floating-point number type in Lex. It can recognize and tokenize floating-point numbers in various formats.
FLOAT Production:
- The
FLOAT
production defines the rules for a floating-point number. It has three sub-rules:- A decimal point (
.
) followed by one or more digits, optionally followed by an exponent. - One or more digits, followed by a decimal point and an exponent.
- One or more digits, followed by a decimal point and optionally more digits, followed by an exponent.
- A decimal point (
DIGITS Production:
DIGITS
matches one or more digits ('0'
to'9'
).
Exponent Production:
Exponent
matches the exponent part of the floating-point number, which consists of the letter'e'
or'E'
, followed by an optional sign ('+'
or'-'
), and one or more digits.
Example Floating-Point Numbers:
2.3
: Matches the rule 1: decimal point followed by digits..3
: Matches the rule 2: digits followed by a decimal point..3e4
: Matches the rule 3: digits followed by a decimal point and an exponent..3e+34
: Matches the rule 3: digits followed by a decimal point, more digits, and an exponent with a positive sign..3e-34
: Matches the rule 3: digits followed by a decimal point, more digits, and an exponent with a negative sign.2.e34
: Matches the rule 3: digits followed by a decimal point and an exponent. Note that the leading zero before the decimal point is not required.
Source code in the python programming language
FLOAT
: '.' DIGITS (Exponent)?
| DIGITS '.' Exponent
| DIGITS ('.' (DIGITS (Exponent)?)? | Exponent)
;
DIGITS : ( '0' .. '9' )+ ;
Exponent
: ('e' | 'E') ( '+' | '-' )? DIGITS
;
2.3 # 2.2999999999999998
.3 # 0.29999999999999999
.3e4 # 3000.0
.3e+34 # 2.9999999999999998e+33
.3e-34 # 2.9999999999999999e-35
2.e34 # 1.9999999999999999e+34
You may also check:How to resolve the algorithm Mandelbrot set step by step in the Vedit macro language programming language
You may also check:How to resolve the algorithm Memory allocation step by step in the Axe programming language
You may also check:How to resolve the algorithm Sorting algorithms/Stooge sort step by step in the Common Lisp programming language
You may also check:How to resolve the algorithm HTTP step by step in the F# programming language
You may also check:How to resolve the algorithm Sorting algorithms/Bubble sort step by step in the 11l programming language