mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
feat!: Indexes for nodes in the AST (#414)
Indexes allow associating extra data with nodes in the AST using an array and then quickly looking up the array to fetch the extra data. - Index eidx for expressions - Index sidx for statements - Index qidx for queries. AST nodes are not cloneable. Therefore once a module is created, it is not possible to accidentally create two nodes with the same index inadvertently via clone. Also added IndexChecker in debug builds. When a module is parsed, it will assert that indexes have been constructed correctly. AST Cleanup - Make literal expressions (null, val, number, string etc) also structs to match all other expressions - Merge True and False nodes into a single Bool node. Also update dependencies. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
committed by
GitHub
parent
620f8a4547
commit
444b2970a1
@@ -8,6 +8,9 @@ cases:
|
||||
x = {1}
|
||||
y = {2}
|
||||
z = [ x | y ] #, 5] # in {5}, 6]
|
||||
num_expressions: 11
|
||||
num_queries: 1
|
||||
num_statements: 1
|
||||
policy:
|
||||
- --skip--
|
||||
- --skip--
|
||||
@@ -16,18 +19,24 @@ cases:
|
||||
compr:
|
||||
refr:
|
||||
var: z
|
||||
eidx: 7
|
||||
assign:
|
||||
op: =
|
||||
value:
|
||||
arraycompr:
|
||||
term:
|
||||
var: x
|
||||
eidx: 8
|
||||
query:
|
||||
qidx: 0
|
||||
stmts:
|
||||
- span: y
|
||||
literal:
|
||||
expr:
|
||||
var: y
|
||||
eidx: 9
|
||||
sidx: 0
|
||||
eidx: 10
|
||||
bodies: []
|
||||
|
||||
- note: case2-array
|
||||
@@ -36,6 +45,9 @@ cases:
|
||||
x = {1}
|
||||
y = {2}
|
||||
z = [ x | y, 5] # in {5}, 6]
|
||||
num_expressions: 13
|
||||
num_queries: 0
|
||||
num_statements: 0
|
||||
policy:
|
||||
- --skip--
|
||||
- --skip--
|
||||
@@ -44,6 +56,7 @@ cases:
|
||||
compr:
|
||||
refr:
|
||||
var: z
|
||||
eidx: 7
|
||||
assign:
|
||||
op: =
|
||||
value:
|
||||
@@ -52,9 +65,14 @@ cases:
|
||||
op: "|"
|
||||
lhs:
|
||||
var: x
|
||||
eidx: 8
|
||||
rhs:
|
||||
var: y
|
||||
eidx: 9
|
||||
eidx: 10
|
||||
- number: 5
|
||||
eidx: 11
|
||||
eidx: 12
|
||||
bodies: []
|
||||
|
||||
- note: case3-compr
|
||||
@@ -64,6 +82,9 @@ cases:
|
||||
x = {1}
|
||||
y = {2}
|
||||
z = [ x | y, 5 in {5}] #, 6]
|
||||
num_expressions: 18
|
||||
num_queries: 1
|
||||
num_statements: 1
|
||||
policy:
|
||||
- --skip--
|
||||
- --skip--
|
||||
@@ -72,25 +93,36 @@ cases:
|
||||
compr:
|
||||
refr:
|
||||
var: z
|
||||
eidx: 10
|
||||
assign:
|
||||
op: =
|
||||
value:
|
||||
arraycompr:
|
||||
term:
|
||||
var: x
|
||||
eidx: 11
|
||||
query:
|
||||
qidx: 0
|
||||
stmts:
|
||||
- span: y, 5 in {5}
|
||||
sidx: 0
|
||||
literal:
|
||||
expr:
|
||||
inexpr:
|
||||
key:
|
||||
var: y
|
||||
eidx: 12
|
||||
value:
|
||||
number: 5
|
||||
eidx: 13
|
||||
collection:
|
||||
set:
|
||||
- number: 5
|
||||
eidx: 14
|
||||
eidx: 15
|
||||
eidx: 16
|
||||
eidx: 15
|
||||
eidx: 17
|
||||
bodies: []
|
||||
|
||||
- note: case4-array
|
||||
@@ -100,6 +132,9 @@ cases:
|
||||
x = {1}
|
||||
y = {2}
|
||||
z = [ x | y, 5 in {5}, 6]
|
||||
num_expressions: 20
|
||||
num_queries: 0
|
||||
num_statements: 0
|
||||
policy:
|
||||
- --skip--
|
||||
- --skip--
|
||||
@@ -108,6 +143,7 @@ cases:
|
||||
compr:
|
||||
refr:
|
||||
var: z
|
||||
eidx: 10
|
||||
assign:
|
||||
op: =
|
||||
value:
|
||||
@@ -116,15 +152,24 @@ cases:
|
||||
op: "|"
|
||||
lhs:
|
||||
var: x
|
||||
eidx: 11
|
||||
rhs:
|
||||
var: y
|
||||
eidx: 12
|
||||
eidx: 13
|
||||
- inexpr:
|
||||
value:
|
||||
number: 5
|
||||
eidx: 14
|
||||
collection:
|
||||
set:
|
||||
- number: 5
|
||||
eidx: 15
|
||||
eidx: 16
|
||||
eidx: 17
|
||||
- number: 6
|
||||
eidx: 18
|
||||
eidx: 19
|
||||
bodies: []
|
||||
|
||||
- note: case5-array
|
||||
@@ -134,6 +179,9 @@ cases:
|
||||
x = {1}
|
||||
y = {2}
|
||||
z = [ x - {10} | y, 5 in {5}] #, 6]
|
||||
num_expressions: 22
|
||||
num_queries: 0
|
||||
num_statements: 0
|
||||
policy:
|
||||
- --skip--
|
||||
- --skip--
|
||||
@@ -142,6 +190,7 @@ cases:
|
||||
compr:
|
||||
refr:
|
||||
var: z
|
||||
eidx: 10
|
||||
assign:
|
||||
op: =
|
||||
value:
|
||||
@@ -153,17 +202,28 @@ cases:
|
||||
op: "-"
|
||||
lhs:
|
||||
var: x
|
||||
eidx: 11
|
||||
rhs:
|
||||
set:
|
||||
- number: 10
|
||||
eidx: 12
|
||||
eidx: 13
|
||||
eidx: 14
|
||||
rhs:
|
||||
var: y
|
||||
eidx: 15
|
||||
eidx: 16
|
||||
- inexpr:
|
||||
value:
|
||||
number: 5
|
||||
eidx: 17
|
||||
collection:
|
||||
set:
|
||||
- number: 5
|
||||
eidx: 18
|
||||
eidx: 19
|
||||
eidx: 20
|
||||
eidx: 21
|
||||
bodies: []
|
||||
|
||||
- note: case6-compr
|
||||
@@ -173,6 +233,9 @@ cases:
|
||||
x = {1}
|
||||
y = {2}
|
||||
z = [ (x - {10}) | y, 5 in {5}] #, 6]
|
||||
num_expressions: 21
|
||||
num_queries: 1
|
||||
num_statements: 1
|
||||
policy:
|
||||
- --skip--
|
||||
- --skip--
|
||||
@@ -181,6 +244,7 @@ cases:
|
||||
compr:
|
||||
refr:
|
||||
var: z
|
||||
eidx: 10
|
||||
assign:
|
||||
op: =
|
||||
value:
|
||||
@@ -190,19 +254,31 @@ cases:
|
||||
op: "-"
|
||||
lhs:
|
||||
var: x
|
||||
eidx: 11
|
||||
rhs:
|
||||
set:
|
||||
- number: 10
|
||||
eidx: 12
|
||||
eidx: 13
|
||||
eidx: 14
|
||||
query:
|
||||
qidx: 0
|
||||
stmts:
|
||||
- literal:
|
||||
- sidx: 0
|
||||
literal:
|
||||
expr:
|
||||
inexpr:
|
||||
key:
|
||||
var: y
|
||||
eidx: 15
|
||||
value:
|
||||
number: 5
|
||||
eidx: 16
|
||||
collection:
|
||||
set:
|
||||
- number: 5
|
||||
eidx: 17
|
||||
eidx: 18
|
||||
eidx: 19
|
||||
eidx: 20
|
||||
bodies: []
|
||||
|
||||
Reference in New Issue
Block a user