1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:47:34 +00:00

JSSpecCompiler: Parse arbitrarily large rational numbers in xspec mode

This commit is contained in:
Dan Klishch 2024-01-20 21:18:05 -05:00 committed by Andrew Kaster
parent 2a2e31f2ed
commit 86d54a8684
9 changed files with 64 additions and 8 deletions

View file

@ -0,0 +1,16 @@
<!DOCTYPE inline_dtd[<!ENTITY nbsp " ">]>
<specification>
<emu-clause id="1" aoid="ArbitrarilyLargeNumbers">
<h1><span class="secnum">1</span> ArbitrarilyLargeNumbers ( <var>a</var> )</h1>
<emu-alg>
<ol>
<li>Let <var>a</var> be 1.</li>
<li>Let <var>b</var> be 3.6.</li>
<li>Let <var>c</var> be -3.6.</li>
<li>Let <var>d</var> be -1000000000000000000000.</li>
<li>Let <var>e</var> be 1.0000001.</li>
<li>Return <var>a</var>+<var>b</var>+<var>c</var>+<var>d</var>+<var>e</var>.</li>
</ol>
</emu-alg>
</emu-clause>
</specification>

View file

@ -0,0 +1,29 @@
===== AST after reference-resolving =====
ArbitrarilyLargeNumbers(a):
TreeList
BinaryOperation Assignment
Var a
MathematicalConstant 1
BinaryOperation Assignment
Var b
MathematicalConstant 3.6
BinaryOperation Assignment
Var c
MathematicalConstant -3.6
BinaryOperation Assignment
Var d
MathematicalConstant -1000000000000000000000
BinaryOperation Assignment
Var e
MathematicalConstant 10000001/10000000
ReturnNode
BinaryOperation Plus
Var a
BinaryOperation Plus
Var b
BinaryOperation Plus
Var c
BinaryOperation Plus
Var d
Var e