Skip to content

Commit 2b1e8d1

Browse files
committed
TASK: Remove floating points from Parser
1 parent 4df96d7 commit 2b1e8d1

File tree

7 files changed

+30
-185
lines changed

7 files changed

+30
-185
lines changed

src/Parser/Tokenizer/TokenType.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ public static function fromBuffer(Buffer $buffer): TokenType
111111
$value === 'false' => self::KEYWORD_FALSE,
112112
$value === 'null' => self::KEYWORD_NULL,
113113

114+
$value === '.' => self::PERIOD,
115+
114116
(bool) preg_match(
115117
'/^0[bB][0-1]+$/',
116118
$value

src/Parser/Tokenizer/Tokenizer.php

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,7 @@ private static function block(\Iterator $fragments): \Iterator
8282
CharacterType::TEMPLATE_LITERAL_DELIMITER => self::templateLiteral($fragments),
8383
CharacterType::BRACKET_OPEN => self::block($fragments),
8484
CharacterType::ANGLE_OPEN => self::angle($fragments),
85-
CharacterType::PERIOD => match (TokenType::fromBuffer($buffer)) {
86-
TokenType::NUMBER_BINARY,
87-
TokenType::NUMBER_OCTAL,
88-
TokenType::NUMBER_DECIMAL,
89-
TokenType::NUMBER_HEXADECIMAL => null,
90-
default => self::period($fragments)
91-
},
85+
CharacterType::PERIOD => self::period($fragments),
9286
CharacterType::ANGLE_CLOSE,
9387
CharacterType::FORWARD_SLASH,
9488
CharacterType::SYMBOL => self::symbol($fragments),
@@ -232,27 +226,6 @@ public static function period(\Iterator $fragments): \Iterator
232226
$buffer = Buffer::empty()->append($fragments->current());
233227
$fragments->next();
234228

235-
if ($fragments->valid()) {
236-
$fragment = $fragments->current();
237-
238-
if (CharacterType::DIGIT->is($fragment->value)) {
239-
$buffer->append($fragment);
240-
$fragments->next();
241-
242-
while ($fragments->valid()) {
243-
$fragment = $fragments->current();
244-
245-
if (CharacterType::DIGIT->is($fragment->value)) {
246-
$buffer->append($fragment);
247-
$fragments->next();
248-
} else {
249-
yield from $buffer->flush(TokenType::NUMBER_DECIMAL);
250-
return;
251-
}
252-
}
253-
}
254-
}
255-
256229
yield from $buffer->flush(TokenType::PERIOD);
257230
}
258231

test/Integration/Examples/Numbers/Numbers.afx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,5 @@ export component Numbers {
2121

2222
# With Exponent
2323
1E3 ||
24-
2e6 ||
25-
26-
# With Floating Point
27-
123.456 ||
28-
0.1e2 ||
29-
.22
24+
2e6
3025
}

test/Integration/Examples/Numbers/Numbers.ast.json

Lines changed: 25 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -69,62 +69,17 @@
6969
"operator": "OR",
7070
"operands": [
7171
{
72-
"type": "BinaryOperationNode",
72+
"type": "IntegerLiteralNode",
7373
"payload": {
74-
"operator": "OR",
75-
"operands": [
76-
{
77-
"type": "BinaryOperationNode",
78-
"payload": {
79-
"operator": "OR",
80-
"operands": [
81-
{
82-
"type": "BinaryOperationNode",
83-
"payload": {
84-
"operator": "OR",
85-
"operands": [
86-
{
87-
"type": "IntegerLiteralNode",
88-
"payload": {
89-
"value": "0",
90-
"format": "DECIMAL"
91-
}
92-
},
93-
{
94-
"type": "IntegerLiteralNode",
95-
"payload": {
96-
"value": "1234567890",
97-
"format": "DECIMAL"
98-
}
99-
}
100-
]
101-
}
102-
},
103-
{
104-
"type": "IntegerLiteralNode",
105-
"payload": {
106-
"value": "42",
107-
"format": "DECIMAL"
108-
}
109-
}
110-
]
111-
}
112-
},
113-
{
114-
"type": "IntegerLiteralNode",
115-
"payload": {
116-
"value": "0b10000000000000000000000000000000",
117-
"format": "BINARY"
118-
}
119-
}
120-
]
74+
"value": "0",
75+
"format": "DECIMAL"
12176
}
12277
},
12378
{
12479
"type": "IntegerLiteralNode",
12580
"payload": {
126-
"value": "0b01111111100000000000000000000000",
127-
"format": "BINARY"
81+
"value": "1234567890",
82+
"format": "DECIMAL"
12883
}
12984
}
13085
]
@@ -133,8 +88,8 @@
13388
{
13489
"type": "IntegerLiteralNode",
13590
"payload": {
136-
"value": "0B00000000011111111111111111111111",
137-
"format": "BINARY"
91+
"value": "42",
92+
"format": "DECIMAL"
13893
}
13994
}
14095
]
@@ -143,8 +98,8 @@
14398
{
14499
"type": "IntegerLiteralNode",
145100
"payload": {
146-
"value": "0o755",
147-
"format": "OCTAL"
101+
"value": "0b10000000000000000000000000000000",
102+
"format": "BINARY"
148103
}
149104
}
150105
]
@@ -153,8 +108,8 @@
153108
{
154109
"type": "IntegerLiteralNode",
155110
"payload": {
156-
"value": "0o644",
157-
"format": "OCTAL"
111+
"value": "0b01111111100000000000000000000000",
112+
"format": "BINARY"
158113
}
159114
}
160115
]
@@ -163,8 +118,8 @@
163118
{
164119
"type": "IntegerLiteralNode",
165120
"payload": {
166-
"value": "0xFFFFFFFFFFFFFFFFF",
167-
"format": "HEXADECIMAL"
121+
"value": "0B00000000011111111111111111111111",
122+
"format": "BINARY"
168123
}
169124
}
170125
]
@@ -173,8 +128,8 @@
173128
{
174129
"type": "IntegerLiteralNode",
175130
"payload": {
176-
"value": "0x123456789ABCDEF",
177-
"format": "HEXADECIMAL"
131+
"value": "0o755",
132+
"format": "OCTAL"
178133
}
179134
}
180135
]
@@ -183,8 +138,8 @@
183138
{
184139
"type": "IntegerLiteralNode",
185140
"payload": {
186-
"value": "0xA",
187-
"format": "HEXADECIMAL"
141+
"value": "0o644",
142+
"format": "OCTAL"
188143
}
189144
}
190145
]
@@ -193,8 +148,8 @@
193148
{
194149
"type": "IntegerLiteralNode",
195150
"payload": {
196-
"value": "1E3",
197-
"format": "DECIMAL"
151+
"value": "0xFFFFFFFFFFFFFFFFF",
152+
"format": "HEXADECIMAL"
198153
}
199154
}
200155
]
@@ -203,8 +158,8 @@
203158
{
204159
"type": "IntegerLiteralNode",
205160
"payload": {
206-
"value": "2e6",
207-
"format": "DECIMAL"
161+
"value": "0x123456789ABCDEF",
162+
"format": "HEXADECIMAL"
208163
}
209164
}
210165
]
@@ -213,8 +168,8 @@
213168
{
214169
"type": "IntegerLiteralNode",
215170
"payload": {
216-
"value": "123.456",
217-
"format": "DECIMAL"
171+
"value": "0xA",
172+
"format": "HEXADECIMAL"
218173
}
219174
}
220175
]
@@ -223,7 +178,7 @@
223178
{
224179
"type": "IntegerLiteralNode",
225180
"payload": {
226-
"value": "0.1e2",
181+
"value": "1E3",
227182
"format": "DECIMAL"
228183
}
229184
}
@@ -233,7 +188,7 @@
233188
{
234189
"type": "IntegerLiteralNode",
235190
"payload": {
236-
"value": ".22",
191+
"value": "2e6",
237192
"format": "DECIMAL"
238193
}
239194
}

test/Integration/Examples/Numbers/Numbers.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ final class Numbers extends BaseClass
1010
{
1111
public function render(): string
1212
{
13-
return (string) (((((((((((((((0 || 1234567890) || 42) || 0b10000000000000000000000000000000) || 0b01111111100000000000000000000000) || 0b00000000011111111111111111111111) || 0o755) || 0o644) || 0xFFFFFFFFFFFFFFFFF) || 0x123456789ABCDEF) || 0xA) || 1E3) || 2e6) || 123.456) || 0.1e2) || .22);
13+
return (string) ((((((((((((0 || 1234567890) || 42) || 0b10000000000000000000000000000000) || 0b01111111100000000000000000000000) || 0b00000000011111111111111111111111) || 0o755) || 0o644) || 0xFFFFFFFFFFFFFFFFF) || 0x123456789ABCDEF) || 0xA) || 1E3) || 2e6);
1414
}
1515
}

test/Integration/Examples/Numbers/Numbers.tokens.json

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -367,82 +367,6 @@
367367
"type": "NUMBER_DECIMAL",
368368
"value": "2e6"
369369
},
370-
{
371-
"type": "SPACE",
372-
"value": " "
373-
},
374-
{
375-
"type": "OPERATOR_BOOLEAN_OR",
376-
"value": "||"
377-
},
378-
{
379-
"type": "END_OF_LINE",
380-
"value": "\n"
381-
},
382-
{
383-
"type": "END_OF_LINE",
384-
"value": "\n"
385-
},
386-
{
387-
"type": "SPACE",
388-
"value": " "
389-
},
390-
{
391-
"type": "COMMENT",
392-
"value": "# With Floating Point"
393-
},
394-
{
395-
"type": "END_OF_LINE",
396-
"value": "\n"
397-
},
398-
{
399-
"type": "SPACE",
400-
"value": " "
401-
},
402-
{
403-
"type": "NUMBER_DECIMAL",
404-
"value": "123.456"
405-
},
406-
{
407-
"type": "SPACE",
408-
"value": " "
409-
},
410-
{
411-
"type": "OPERATOR_BOOLEAN_OR",
412-
"value": "||"
413-
},
414-
{
415-
"type": "END_OF_LINE",
416-
"value": "\n"
417-
},
418-
{
419-
"type": "SPACE",
420-
"value": " "
421-
},
422-
{
423-
"type": "NUMBER_DECIMAL",
424-
"value": "0.1e2"
425-
},
426-
{
427-
"type": "SPACE",
428-
"value": " "
429-
},
430-
{
431-
"type": "OPERATOR_BOOLEAN_OR",
432-
"value": "||"
433-
},
434-
{
435-
"type": "END_OF_LINE",
436-
"value": "\n"
437-
},
438-
{
439-
"type": "SPACE",
440-
"value": " "
441-
},
442-
{
443-
"type": "NUMBER_DECIMAL",
444-
"value": ".22"
445-
},
446370
{
447371
"type": "END_OF_LINE",
448372
"value": "\n"

test/Unit/Target/Php/Transpiler/IntegerLiteral/IntegerLiteralTranspilerTest.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,6 @@ public static function integerLiteralExamples(): array
5757
// With Exponent
5858
' 1E3 ' => ['1E3', '1E3'],
5959
' 2e6 ' => ['2e6', '2e6'],
60-
61-
// With Floating Point
62-
' 123.456 ' => ['123.456', '123.456'],
63-
' 0.1e2 ' => ['0.1e2', '0.1e2'],
6460
];
6561
}
6662

0 commit comments

Comments
 (0)