Created
April 16, 2016 22:20
-
-
Save qoh/770fa27e6a8aef60f7509eef619efce4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "1" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "2" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "28" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "3" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "4" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "30" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "5" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "6" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "30" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "7" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "8" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "9" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "30" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "10" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "11" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "30" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "12" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "13" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "14" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "29" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "15" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "16" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "30" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "17" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "18" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "30" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "19" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "20" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "21" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "30" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "22" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "23" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "30" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "$monthDays", | |
"arrayIndex": { | |
"type": "IntNode", | |
"value": "24" | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "31" | |
} | |
}, | |
{ | |
"type": "FunctionDeclStmtNode", | |
"fnName": "isLeapYear", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%year", | |
"arrayIndex": null | |
} | |
], | |
"stmts": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "%", | |
"left": { | |
"type": "VarNode", | |
"varName": "%year", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "4" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"0\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "%", | |
"left": { | |
"type": "VarNode", | |
"varName": "%year", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "100" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "%", | |
"left": { | |
"type": "VarNode", | |
"varName": "%year", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "400" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"0\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
}, | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
} | |
], | |
"package": null | |
}, | |
{ | |
"type": "FunctionDeclStmtNode", | |
"fnName": "parseISODate", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
} | |
], | |
"stmts": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%len", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FuncCallExprNode", | |
"funcName": "strlen", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "||", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "<", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "6" | |
} | |
}, | |
"right": { | |
"type": "IntBinaryExprNode", | |
"op": ">", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "10" | |
} | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%year", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntBinaryExprNode", | |
"op": "|", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "0" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "4" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%leap", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntBinaryExprNode", | |
"op": "|", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "isLeapYear", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%year", | |
"arrayIndex": null | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%leapMonth", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "VarNode", | |
"varName": "%leap", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "12" | |
} | |
} | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "StreqExprNode", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "4" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "1" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "StrConstNode", | |
"str": "\"-\"", | |
"tag": false | |
}, | |
"eq": true | |
}, | |
"ifBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "strcmp", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "5" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "1" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"W\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "10" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%day", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "IntNode", | |
"value": "7" | |
}, | |
"right": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "6" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "2" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "9" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "1" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
} | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%day", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "IntNode", | |
"value": "7" | |
}, | |
"right": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "6" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "2" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "7" | |
} | |
} | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
] | |
} | |
] | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "||", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "7" | |
} | |
}, | |
"right": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "10" | |
} | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%month", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntBinaryExprNode", | |
"op": "|", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "5" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "2" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%day", | |
"arrayIndex": null, | |
"expr": { | |
"type": "ConditionalExprNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "10" | |
} | |
}, | |
"trueExpr": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "8" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "2" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
} | |
} | |
}, | |
{ | |
"type": "LoopStmtNode", | |
"testExpr": { | |
"type": "AssignExprNode", | |
"varName": "%previous", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
}, | |
"initExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "<", | |
"left": { | |
"type": "VarNode", | |
"varName": "%previous", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "VarNode", | |
"varName": "%month", | |
"arrayIndex": null | |
} | |
}, | |
"endLoopExpr": { | |
"type": "AssignOpExprNode", | |
"varName": "%previous", | |
"arrayIndex": null | |
}, | |
"loopBlock": [ | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%day", | |
"arrayIndex": null | |
} | |
], | |
"isDoLoop": false | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%day", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "5" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "3" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
} | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
] | |
} | |
] | |
} | |
] | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "strcmp", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "4" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "1" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"W\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%day", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "IntNode", | |
"value": "7" | |
}, | |
"right": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "5" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "2" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "7" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "1" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
} | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "7" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%day", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "IntNode", | |
"value": "7" | |
}, | |
"right": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "5" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "2" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "7" | |
} | |
} | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
] | |
} | |
] | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "||", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "6" | |
} | |
}, | |
"right": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%month", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntBinaryExprNode", | |
"op": "|", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "4" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "2" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%day", | |
"arrayIndex": null, | |
"expr": { | |
"type": "ConditionalExprNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
}, | |
"trueExpr": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "6" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "2" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
} | |
} | |
}, | |
{ | |
"type": "LoopStmtNode", | |
"testExpr": { | |
"type": "AssignExprNode", | |
"varName": "%previous", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
}, | |
"initExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "<", | |
"left": { | |
"type": "VarNode", | |
"varName": "%previous", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "VarNode", | |
"varName": "%month", | |
"arrayIndex": null | |
} | |
}, | |
"endLoopExpr": { | |
"type": "AssignOpExprNode", | |
"varName": "%previous", | |
"arrayIndex": null | |
}, | |
"loopBlock": [ | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%day", | |
"arrayIndex": null | |
} | |
], | |
"isDoLoop": false | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "7" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%day", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "4" | |
}, | |
{ | |
"type": "IntNode", | |
"value": "3" | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
} | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
] | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%time", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%year", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "1970" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "31536000" | |
} | |
}, | |
"right": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "VarNode", | |
"varName": "%day", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "86400" | |
} | |
} | |
} | |
}, | |
{ | |
"type": "LoopStmtNode", | |
"testExpr": { | |
"type": "AssignExprNode", | |
"varName": "%previous", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntNode", | |
"value": "1970" | |
} | |
}, | |
"initExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "<", | |
"left": { | |
"type": "VarNode", | |
"varName": "%previous", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "VarNode", | |
"varName": "%year", | |
"arrayIndex": null | |
} | |
}, | |
"endLoopExpr": { | |
"type": "AssignOpExprNode", | |
"varName": "%previous", | |
"arrayIndex": null | |
}, | |
"loopBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "FuncCallExprNode", | |
"funcName": "isLeapYear", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%previous", | |
"arrayIndex": null | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%time", | |
"arrayIndex": null | |
} | |
], | |
"elseBlock": null | |
} | |
], | |
"isDoLoop": false | |
}, | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "IntBinaryExprNode", | |
"op": "|", | |
"left": { | |
"type": "VarNode", | |
"varName": "%time", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
} | |
], | |
"package": null | |
}, | |
{ | |
"type": "FunctionDeclStmtNode", | |
"fnName": "parseISOTime", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
} | |
], | |
"stmts": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%len", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FuncCallExprNode", | |
"funcName": "strlen", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%offset", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntNode", | |
"value": "7200" | |
} | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "&&", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": ">=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "5" | |
} | |
}, | |
"right": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "strcmp", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"Z\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%offset", | |
"arrayIndex": null, | |
"expr": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
}, | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%len", | |
"arrayIndex": null | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": ">=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "7" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%dir", | |
"arrayIndex": { | |
"type": "StrConstNode", | |
"str": "\"+\"", | |
"tag": false | |
}, | |
"expr": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%dir", | |
"arrayIndex": { | |
"type": "StrConstNode", | |
"str": "\"-\"", | |
"tag": false | |
}, | |
"expr": { | |
"type": "FloatUnaryExprNode", | |
"op": "-", | |
"expr": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
} | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "AssignExprNode", | |
"varName": "%dir", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "VarNode", | |
"varName": "%dir", | |
"arrayIndex": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "3" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%offset", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "VarNode", | |
"varName": "%dir", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "2" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"2\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "3600" | |
} | |
} | |
}, | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%len", | |
"arrayIndex": null | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "&&", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": ">=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "9" | |
} | |
}, | |
"right": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "AssignExprNode", | |
"varName": "%dir", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "VarNode", | |
"varName": "%dir", | |
"arrayIndex": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "5" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%offset", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "VarNode", | |
"varName": "%dir", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "4" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"2\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "3600" | |
} | |
}, | |
"right": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "2" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"2\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "60" | |
} | |
} | |
} | |
} | |
}, | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%len", | |
"arrayIndex": null | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "&&", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": ">=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "10" | |
} | |
}, | |
"right": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "AssignExprNode", | |
"varName": "%dir", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "VarNode", | |
"varName": "%dir", | |
"arrayIndex": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "6" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%offset", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "VarNode", | |
"varName": "%dir", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "5" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"2\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "3600" | |
} | |
}, | |
"right": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "-", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "2" | |
} | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"2\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "60" | |
} | |
} | |
} | |
} | |
}, | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%len", | |
"arrayIndex": null | |
} | |
], | |
"elseBlock": null | |
} | |
] | |
} | |
] | |
} | |
], | |
"elseBlock": null | |
} | |
] | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "||", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "<", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "4" | |
} | |
}, | |
"right": { | |
"type": "IntBinaryExprNode", | |
"op": ">", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "12" | |
} | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%time", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "VarNode", | |
"varName": "%offset", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "FloatBinaryExprNode", | |
"op": "*", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"0\"", | |
"tag": false | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"2\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "3600" | |
} | |
} | |
} | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "&&", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": ">=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "5" | |
} | |
}, | |
"right": { | |
"type": "StreqExprNode", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"2\"", | |
"tag": false | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "StrConstNode", | |
"str": "\":\"", | |
"tag": false | |
}, | |
"eq": true | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%time", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "&&", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": ">=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
}, | |
"right": { | |
"type": "StreqExprNode", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"5\"", | |
"tag": false | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "StrConstNode", | |
"str": "\":\"", | |
"tag": false | |
}, | |
"eq": true | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%time", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "&&", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "12" | |
} | |
}, | |
"right": { | |
"type": "StreqExprNode", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"8\"", | |
"tag": false | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "StrConstNode", | |
"str": "\".\"", | |
"tag": false | |
}, | |
"eq": true | |
} | |
}, | |
"ifBlock": [], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "8" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
} | |
] | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "5" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
} | |
] | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%time", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": ">=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "6" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "AssignOpExprNode", | |
"varName": "%time", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "&&", | |
"left": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "10" | |
} | |
}, | |
"right": { | |
"type": "StreqExprNode", | |
"left": { | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"6\"", | |
"tag": false | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"1\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
}, | |
"right": { | |
"type": "StrConstNode", | |
"str": "\".\"", | |
"tag": false | |
}, | |
"eq": true | |
} | |
}, | |
"ifBlock": [], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "6" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
} | |
] | |
} | |
], | |
"elseBlock": [ | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "!=", | |
"left": { | |
"type": "VarNode", | |
"varName": "%len", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "4" | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "IntBinaryExprNode", | |
"op": "|", | |
"left": { | |
"type": "VarNode", | |
"varName": "%time", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
} | |
], | |
"package": null | |
}, | |
{ | |
"type": "FunctionDeclStmtNode", | |
"fnName": "parseISODateTime", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
} | |
], | |
"stmts": [ | |
{ | |
"type": "AssignExprNode", | |
"varName": "%sep", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FuncCallExprNode", | |
"funcName": "strpos", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "StrConstNode", | |
"str": "\"T\"", | |
"tag": false | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "IntBinaryExprNode", | |
"op": "==", | |
"left": { | |
"type": "VarNode", | |
"varName": "%sep", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "FloatUnaryExprNode", | |
"op": "-", | |
"expr": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
} | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "FuncCallExprNode", | |
"funcName": "parseISODate", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
} | |
], | |
"elseBlock": null | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%date", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FuncCallExprNode", | |
"funcName": "parseISODate", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "IntNode", | |
"value": "0" | |
}, | |
{ | |
"type": "VarNode", | |
"varName": "%sep", | |
"arrayIndex": null | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "StreqExprNode", | |
"left": { | |
"type": "VarNode", | |
"varName": "%date", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
}, | |
"eq": true | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
}, | |
{ | |
"type": "AssignExprNode", | |
"varName": "%time", | |
"arrayIndex": null, | |
"expr": { | |
"type": "FuncCallExprNode", | |
"funcName": "parseISODate", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "FuncCallExprNode", | |
"funcName": "getSubStr", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
}, | |
{ | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "VarNode", | |
"varName": "%sep", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "1" | |
} | |
}, | |
{ | |
"type": "FuncCallExprNode", | |
"funcName": "strlen", | |
"nameSpace": null, | |
"args": [ | |
{ | |
"type": "VarNode", | |
"varName": "%str", | |
"arrayIndex": null | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
], | |
"callType": "FunctionCall" | |
} | |
}, | |
{ | |
"type": "IfStmtNode", | |
"testExpr": { | |
"type": "StreqExprNode", | |
"left": { | |
"type": "VarNode", | |
"varName": "%time", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
}, | |
"eq": true | |
}, | |
"ifBlock": [ | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "StrConstNode", | |
"str": "\"\"", | |
"tag": false | |
} | |
} | |
], | |
"elseBlock": null | |
}, | |
{ | |
"type": "ReturnStmtNode", | |
"expr": { | |
"type": "IntBinaryExprNode", | |
"op": "|", | |
"left": { | |
"type": "FloatBinaryExprNode", | |
"op": "+", | |
"left": { | |
"type": "VarNode", | |
"varName": "%date", | |
"arrayIndex": null | |
}, | |
"right": { | |
"type": "VarNode", | |
"varName": "%time", | |
"arrayIndex": null | |
} | |
}, | |
"right": { | |
"type": "IntNode", | |
"value": "0" | |
} | |
} | |
} | |
], | |
"package": null | |
} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment