Dan Klishch
73ba6d77ab
JSSpecCompiler: Rename SpecParser.h to SpecificationParsing.h
2024-03-14 18:34:13 -06:00
Dan Klishch
f7c952f842
JSSpecCompiler: Ignore notes in algorithm steps
2024-02-24 15:03:08 -07:00
Dan Klishch
ba61b61d67
JSSpecCompiler: Parse "NewTarget" in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
4d8f74c149
JSSpecCompiler: Parse method headers
2024-02-24 15:03:08 -07:00
Dan Klishch
a35a751f9e
JSSpecCompiler: Parse optional arguments groups
2024-02-24 15:03:08 -07:00
Dan Klishch
3e6a07154b
JSSpecCompiler: Parse "the *this* value" in expressions
2024-02-24 15:03:08 -07:00
Dan Klishch
ddf26a768c
JSSpecCompiler: Parse "Perform <expression>." steps
2024-02-24 15:03:08 -07:00
Dan Klishch
d1fc84c638
JSSpecCompiler: Parse accessor property headers
2024-02-24 15:03:08 -07:00
Dan Klishch
a9f3a14a13
JSSpecCompiler: Simplify value handling in TextParser::parse_expression
2024-02-24 15:03:08 -07:00
Dan Klishch
e1a1f4ed1a
JSSpecCompiler: Parse lists in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
d14bb7e91e
JSSpecCompiler: Make function arguments parsing much simpler
...
In a nutshell, when we understand that the expression is a function
call (this happens at '(' after an expression), stop parsing expression
and start parsing function arguments. This makes
`FunctionCallCanonicalizationPass` and the workaround for zero argument
function calls obsolete.
2024-02-24 15:03:08 -07:00
Dan Klishch
990e30f458
JSSpecCompiler: Parse enumerators in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
b800276347
JSSpecCompiler: Parse true, false, this, undefined, and null
2024-02-24 15:03:08 -07:00
Dan Klishch
86d54a8684
JSSpecCompiler: Parse arbitrarily large rational numbers in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
7945c9d808
JSSpecCompiler: Do not store XML::Node in tokens
2024-02-08 07:05:13 -07:00
Dan Klishch
6b30c4d2f0
JSSpecCompiler: Issue meaningful errors in TextParser
2024-02-08 07:05:13 -07:00
Dan Klishch
dee4978d67
JSSpecCompiler+LibXML: Store location for tokens
2024-02-08 07:05:13 -07:00
Dan Klishch
33b36476d9
JSSpecCompiler: Properly parse function calls with zero arguments
...
We cannot handle them normally since we need text between parenthesis to
be a valid expression. As a workaround, we now push an artificial value
to stack to act as an argument (it'll be later removed during function
call canonicalization).
2024-01-21 14:57:10 -07:00
Dan Klishch
14ee25b8ba
JSSpecCompiler: Make -xspec capable of parsing the whole specification
...
... in theory. In practice, we fail to parse all of the functions.
2024-01-21 14:57:10 -07:00
Shannon Booth
e2e7c4d574
Everywhere: Use to_number<T> instead of to_{int,uint,float,double}
...
In a bunch of cases, this actually ends up simplifying the code as
to_number will handle something such as:
```
Optional<I> opt;
if constexpr (IsSigned<I>)
opt = view.to_int<I>();
else
opt = view.to_uint<I>();
```
For us.
The main goal here however is to have a single generic number conversion
API between all of the String classes.
2023-12-23 20:41:07 +01:00
Dan Klishch
326bac19d9
JSSpecCompiler: Make nodes inherit from Statement or Expression
...
The distinction between them will become important during CFG building.
2023-09-17 16:04:42 -06:00
Dan Klishch
092ed1cc8a
JSSpecCompiler: Allow storing NullableTree
s in nodes
...
And use this in ElseIfBranch node.
2023-09-09 11:20:43 -06:00
Dan Klishch
f70e39d501
JSSpecCompiler: Add TextParser for converting algorithm steps into AST
2023-08-31 11:00:31 +02:00