Static specialization done
This commit is contained in:
+76
-223
@@ -16,24 +16,34 @@
|
||||
}
|
||||
],
|
||||
"Body": {
|
||||
"NodeType": "BinaryExpr",
|
||||
"Operator": "+",
|
||||
"Left": {
|
||||
"NodeType": "BinaryExpr",
|
||||
"Operator": "+",
|
||||
"Left": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "a"
|
||||
},
|
||||
"Right": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "b"
|
||||
}
|
||||
},
|
||||
"Right": {
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "c"
|
||||
}
|
||||
"Name": "+"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "+"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "a"
|
||||
},
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "b"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "c"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"repeat": {
|
||||
@@ -74,22 +84,27 @@
|
||||
"Body": {
|
||||
"NodeType": "IfExpr",
|
||||
"Condition": {
|
||||
"NodeType": "BinaryExpr",
|
||||
"Operator": ">",
|
||||
"Left": {
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "counter"
|
||||
"Name": ">"
|
||||
},
|
||||
"Right": {
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Scalar",
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "counter"
|
||||
},
|
||||
{
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 0
|
||||
"Kind": "Scalar",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ThenBranch": {
|
||||
"NodeType": "Block",
|
||||
@@ -105,22 +120,27 @@
|
||||
"NodeType": "Recur",
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "BinaryExpr",
|
||||
"Operator": "-",
|
||||
"Left": {
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "counter"
|
||||
"Name": "-"
|
||||
},
|
||||
"Right": {
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Scalar",
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "counter"
|
||||
},
|
||||
{
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 1
|
||||
"Kind": "Scalar",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -128,8 +148,7 @@
|
||||
},
|
||||
"ElseBranch": {
|
||||
"NodeType": "Block",
|
||||
"Expressions": [
|
||||
]
|
||||
"Expressions": []
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -483,8 +502,21 @@
|
||||
"Name": "series"
|
||||
},
|
||||
"Index": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "len"
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "-"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "count"
|
||||
},
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "len"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -632,185 +664,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"NodeType": "VarDecl",
|
||||
"Identifier": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "sum-product"
|
||||
},
|
||||
"Initializer": {
|
||||
"NodeType": "LambdaExpr",
|
||||
"Parameters": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "xs"
|
||||
},
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "ys"
|
||||
}
|
||||
],
|
||||
"Body": {
|
||||
"NodeType": "Block",
|
||||
"Expressions": [
|
||||
{
|
||||
"NodeType": "VarDecl",
|
||||
"Identifier": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "loop"
|
||||
},
|
||||
"Initializer": {
|
||||
"NodeType": "LambdaExpr",
|
||||
"Parameters": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "i"
|
||||
},
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "acc"
|
||||
}
|
||||
],
|
||||
"Body": {
|
||||
"NodeType": "IfExpr",
|
||||
"Condition": {
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "="
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "i"
|
||||
},
|
||||
{
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "series-count"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "xs"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"ThenBranch": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "acc"
|
||||
},
|
||||
"ElseBranch": {
|
||||
"NodeType": "Recur",
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "+"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "i"
|
||||
},
|
||||
{
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Scalar",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "+"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "acc"
|
||||
},
|
||||
{
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "*"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Indexer",
|
||||
"Base": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "xs"
|
||||
},
|
||||
"Index": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "i"
|
||||
}
|
||||
},
|
||||
{
|
||||
"NodeType": "Indexer",
|
||||
"Base": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "ys"
|
||||
},
|
||||
"Index": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "i"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "loop"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Scalar",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Scalar",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"NodeType": "VarDecl",
|
||||
"Identifier": {
|
||||
@@ -1035,7 +888,7 @@
|
||||
},
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "sum-y"
|
||||
"Name": "sum-x"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user