Ast binding refactoring
This commit is contained in:
@@ -199,5 +199,121 @@
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"factorial": {
|
||||
"NodeType": "LambdaExpr",
|
||||
"Parameters": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "n"
|
||||
}
|
||||
],
|
||||
"Body": {
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "LambdaExpr",
|
||||
"Parameters": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "n"
|
||||
},
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "acc"
|
||||
}
|
||||
],
|
||||
"Body": {
|
||||
"NodeType": "TernaryExpr",
|
||||
"Condition": {
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "<="
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "n"
|
||||
},
|
||||
{
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Scalar",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ThenBranch": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "acc"
|
||||
},
|
||||
"ElseBranch": {
|
||||
"NodeType": "Recur",
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "-"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "n"
|
||||
},
|
||||
{
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Scalar",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"NodeType": "FunctionCall",
|
||||
"Callee": {
|
||||
"NodeType": "Identifier",
|
||||
"Name": "*"
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "acc"
|
||||
},
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "n"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"Arguments": [
|
||||
{
|
||||
"NodeType": "Identifier",
|
||||
"Name": "n"
|
||||
},
|
||||
{
|
||||
"NodeType": "Constant",
|
||||
"Value": {
|
||||
"Kind": "Scalar",
|
||||
"Value": {
|
||||
"Kind": "Ordinal",
|
||||
"Value": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user