Created
April 16, 2016 22:20
-
-
Save qoh/770fa27e6a8aef60f7509eef619efce4 to your computer and use it in GitHub Desktop.
This file contains hidden or 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