ranger-compiler 2.1.70 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +114 -0
- package/README.md +956 -133
- package/{compiler/Lang.clj → dist/Lang.rgr} +2345 -75
- package/dist/README.md +116 -0
- package/dist/{bin/api.d.ts → api.d.ts} +430 -154
- package/dist/api.js +34345 -0
- package/{lib/Ajax.clj → dist/lib/Ajax.rgr} +1 -1
- package/{lib/CmdParams.clj → dist/lib/CmdParams.rgr} +72 -72
- package/{lib/Crypto.clj → dist/lib/Crypto.rgr} +1 -1
- package/{lib/DOMLib.clj → dist/lib/DOMLib.rgr} +2 -2
- package/{lib/Engine3D.clj → dist/lib/Engine3D.rgr} +1 -1
- package/{lib/ImmutableVector.clj → dist/lib/ImmutableVector.rgr} +364 -364
- package/{lib/IndexedDB.clj → dist/lib/IndexedDB.rgr} +1 -1
- package/{lib/JSON.clj → dist/lib/JSON.rgr} +105 -2
- package/{lib/JinxProcess.clj → dist/lib/JinxProcess.rgr} +3 -3
- package/{lib/Storage.clj → dist/lib/Storage.rgr} +1 -1
- package/{lib/Timers.clj → dist/lib/Timers.rgr} +176 -170
- package/{lib/ViewLib.clj → dist/lib/ViewLib.rgr} +1 -1
- package/dist/lib/lib/ACEEditor.rgr +5 -0
- package/dist/lib/lib/Ajax.rgr +196 -0
- package/dist/lib/lib/CmdParams.rgr +72 -0
- package/dist/lib/lib/Crypto.rgr +90 -0
- package/dist/lib/lib/DOMLib.rgr +307 -0
- package/{examples/3D/Engine3D.clj → dist/lib/lib/Engine3D.rgr} +870 -857
- package/dist/lib/lib/ImmutableVector.rgr +364 -0
- package/dist/lib/lib/IndexedDB.rgr +32 -0
- package/{compiler/JSON.clj → dist/lib/lib/JSON.rgr} +106 -3
- package/dist/lib/lib/JinxProcess.rgr +838 -0
- package/dist/lib/lib/SQL.rgr +44 -0
- package/dist/lib/lib/ServiceLib.rgr +9 -0
- package/dist/lib/lib/Storage.rgr +89 -0
- package/dist/lib/lib/Time.rgr +75 -0
- package/dist/lib/lib/Timers.rgr +176 -0
- package/dist/lib/lib/TypedArrays.rgr +14 -0
- package/dist/lib/lib/ViewLib.rgr +851 -0
- package/dist/lib/lib/WebLib.rgr +47 -0
- package/dist/lib/lib/WebServerLib.rgr +137 -0
- package/{lib/ranger-dir.clj → dist/lib/lib/ranger-dir.rgr} +1 -1
- package/{compiler/stdlib.clj → dist/lib/lib/stdlib.rgr} +42 -19
- package/{lib/stdops.clj → dist/lib/lib/stdops.rgr} +1 -1
- package/dist/lib/ranger-dir.rgr +175 -0
- package/{lib/stdlib.clj → dist/lib/stdlib.rgr} +2 -2
- package/dist/lib/stdops.rgr +168 -0
- package/dist/package.json +47 -0
- package/{compiler/bin/output.js → dist/rgrc.js} +15377 -7936
- package/dist/stdops.rgr +168 -0
- package/package.json +196 -39
- package/adventofcode/day1/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day1/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day1/bin/LambdaSignature3.java +0 -3
- package/adventofcode/day1/bin/day1.cpp +0 -124
- package/adventofcode/day1/bin/day1.go +0 -75
- package/adventofcode/day1/bin/day1.js +0 -45
- package/adventofcode/day1/bin/day1.php +0 -46
- package/adventofcode/day1/bin/day1.scala +0 -48
- package/adventofcode/day1/bin/day1.swift +0 -48
- package/adventofcode/day1/bin/day1_part2.cpp +0 -180
- package/adventofcode/day1/bin/day1_part2.go +0 -123
- package/adventofcode/day1/bin/day1_part2.js +0 -76
- package/adventofcode/day1/bin/day1_part2.php +0 -88
- package/adventofcode/day1/bin/day1_part2.scala +0 -81
- package/adventofcode/day1/bin/day1_part2.swift +0 -91
- package/adventofcode/day1/bin/day_one.java +0 -38
- package/adventofcode/day1/bin/day_one_part_two.java +0 -57
- package/adventofcode/day1/bin/operatorsOf.java +0 -37
- package/adventofcode/day1/bin/operatorsOf_5.java +0 -10
- package/adventofcode/day1/bin/operatorsOfboolean_5.java +0 -10
- package/adventofcode/day1/bin/variant.hpp +0 -2416
- package/adventofcode/day1/compile.bat +0 -7
- package/adventofcode/day1/compile2.bat +0 -7
- package/adventofcode/day1/day1.clj +0 -19
- package/adventofcode/day1/day1_part2.clj +0 -43
- package/adventofcode/day1/input1.txt +0 -1
- package/adventofcode/day2/bin/LambdaSignature1.class +0 -0
- package/adventofcode/day2/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day2/bin/LambdaSignature2.class +0 -0
- package/adventofcode/day2/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day2/bin/day2.cpp +0 -133
- package/adventofcode/day2/bin/day2.go +0 -85
- package/adventofcode/day2/bin/day2.js +0 -45
- package/adventofcode/day2/bin/day2.php +0 -59
- package/adventofcode/day2/bin/day2.scala +0 -54
- package/adventofcode/day2/bin/day2.swift +0 -62
- package/adventofcode/day2/bin/day2_part2.cpp +0 -150
- package/adventofcode/day2/bin/day2_part2.go +0 -101
- package/adventofcode/day2/bin/day2_part2.js +0 -54
- package/adventofcode/day2/bin/day2_part2.php +0 -80
- package/adventofcode/day2/bin/day2_part2.scala +0 -68
- package/adventofcode/day2/bin/day2_part2.swift +0 -82
- package/adventofcode/day2/bin/day_two.java +0 -61
- package/adventofcode/day2/bin/day_two_part_two$1$1$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two$1$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two.java +0 -80
- package/adventofcode/day2/bin/operatorsOf.class +0 -0
- package/adventofcode/day2/bin/operatorsOf.java +0 -18
- package/adventofcode/day2/bin/variant.hpp +0 -2416
- package/adventofcode/day2/compile.bat +0 -7
- package/adventofcode/day2/compile2.bat +0 -7
- package/adventofcode/day2/day2.clj +0 -60
- package/adventofcode/day2/day2_part2.clj +0 -69
- package/adventofcode/day2/input1.txt +0 -1
- package/adventofcode/day3/bin/Grid.java +0 -92
- package/adventofcode/day3/bin/GridRow.java +0 -5
- package/adventofcode/day3/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day3/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day3/bin/LambdaSignature3.java +0 -3
- package/adventofcode/day3/bin/day3.cpp +0 -64
- package/adventofcode/day3/bin/day3.go +0 -55
- package/adventofcode/day3/bin/day3.js +0 -42
- package/adventofcode/day3/bin/day3.php +0 -41
- package/adventofcode/day3/bin/day3.scala +0 -52
- package/adventofcode/day3/bin/day3.swift +0 -43
- package/adventofcode/day3/bin/day3_part2.cpp +0 -216
- package/adventofcode/day3/bin/day3_part2.go +0 -188
- package/adventofcode/day3/bin/day3_part2.js +0 -123
- package/adventofcode/day3/bin/day3_part2.php +0 -135
- package/adventofcode/day3/bin/day3_part2.swift +0 -131
- package/adventofcode/day3/bin/day_three_part_two.java +0 -43
- package/adventofcode/day3/bin/day_two.java +0 -42
- package/adventofcode/day3/bin/operatorsOf.java +0 -14
- package/adventofcode/day3/bin/variant.hpp +0 -2416
- package/adventofcode/day3/compile.bat +0 -7
- package/adventofcode/day3/compile2.bat +0 -7
- package/adventofcode/day3/day3.clj +0 -42
- package/adventofcode/day3/day3_part2.clj +0 -112
- package/adventofcode/day4/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day4/bin/day4.cpp +0 -118
- package/adventofcode/day4/bin/day4.go +0 -75
- package/adventofcode/day4/bin/day4.js +0 -40
- package/adventofcode/day4/bin/day4.php +0 -52
- package/adventofcode/day4/bin/day4.scala +0 -47
- package/adventofcode/day4/bin/day4.swift +0 -56
- package/adventofcode/day4/bin/day4_part2.go +0 -129
- package/adventofcode/day4/bin/day4_part2.js +0 -72
- package/adventofcode/day4/bin/day_four.java +0 -41
- package/adventofcode/day4/bin/inputData.java +0 -7
- package/adventofcode/day4/bin/operatorsOf.java +0 -11
- package/adventofcode/day4/bin/variant.hpp +0 -2416
- package/adventofcode/day4/compile.bat +0 -7
- package/adventofcode/day4/compile2.bat +0 -7
- package/adventofcode/day4/day4.clj +0 -32
- package/adventofcode/day4/day4_part2.clj +0 -44
- package/adventofcode/day4/input.clj +0 -519
- package/adventofcode/day4/input.txt +0 -512
- package/bin/api.ts +0 -24471
- package/bin/compiler.ts +0 -24482
- package/bin/output.js +0 -23819
- package/compiler/ColorConsole.clj +0 -22
- package/compiler/ContextOperators.clj +0 -75
- package/compiler/FlowEnterVarDef.clj +0 -223
- package/compiler/InputFileSystem.clj +0 -276
- package/compiler/RangerDocs.clj +0 -7
- package/compiler/TFactory.clj +0 -146
- package/compiler/TFiles.clj +0 -23
- package/compiler/TFlow.clj +0 -39
- package/compiler/TNodeFactory.clj +0 -84
- package/compiler/TTypes.clj +0 -188
- package/compiler/VirtualCompiler.clj +0 -807
- package/compiler/bin/ng_Compiler.js +0 -23779
- package/compiler/commonmark_plugin.clj +0 -359
- package/compiler/feat2.bat +0 -2
- package/compiler/feats.bat +0 -9
- package/compiler/feature_tests.clj +0 -192
- package/compiler/index.js +0 -2
- package/compiler/issue_57.clj +0 -25
- package/compiler/makefile_plugin.clj +0 -135
- package/compiler/markdown_plugin.clj +0 -386
- package/compiler/maven_plugin.clj +0 -162
- package/compiler/ng_AndroidPageWriter.clj +0 -299
- package/compiler/ng_CodeNode.clj +0 -756
- package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
- package/compiler/ng_Compiler.clj +0 -49
- package/compiler/ng_CompilerGeneric.clj +0 -260
- package/compiler/ng_CompilerOrig.clj +0 -854
- package/compiler/ng_DictNode.clj +0 -346
- package/compiler/ng_DictNode2.clj +0 -316
- package/compiler/ng_Execute.clj +0 -138
- package/compiler/ng_Execute1.clj +0 -129
- package/compiler/ng_FlowWork.clj +0 -3951
- package/compiler/ng_LiveCompiler.clj +0 -1109
- package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
- package/compiler/ng_RangerActiveOperators.clj +0 -86
- package/compiler/ng_RangerAppClassDesc.clj +0 -400
- package/compiler/ng_RangerAppEnums.clj +0 -86
- package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
- package/compiler/ng_RangerAppMessages.clj +0 -15
- package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
- package/compiler/ng_RangerAppParamDesc.clj +0 -388
- package/compiler/ng_RangerAppWriterContext.clj +0 -1793
- package/compiler/ng_RangerArgMatch.clj +0 -638
- package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
- package/compiler/ng_RangerCppClassWriter.clj +0 -1023
- package/compiler/ng_RangerDocGenerator.clj +0 -305
- package/compiler/ng_RangerFlowParser.clj +0 -4992
- package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
- package/compiler/ng_RangerGenericClassWriter.clj +0 -573
- package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
- package/compiler/ng_RangerImmutableExtension.clj +0 -77
- package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
- package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1040
- package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
- package/compiler/ng_RangerLanguageWriters.clj +0 -14
- package/compiler/ng_RangerLispParser.clj +0 -873
- package/compiler/ng_RangerPHPClassWriter.clj +0 -643
- package/compiler/ng_RangerPlugin.clj +0 -41
- package/compiler/ng_RangerRangerClassWriter.clj +0 -357
- package/compiler/ng_RangerRustClassWriter.clj +0 -420
- package/compiler/ng_RangerScalaClassWriter.clj +0 -818
- package/compiler/ng_RangerSerializeClass.clj +0 -502
- package/compiler/ng_RangerServiceBuilder.clj +0 -63
- package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
- package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
- package/compiler/ng_RangerTypeClass.clj +0 -45
- package/compiler/ng_SourceParser.clj +0 -241
- package/compiler/ng_SourceParser2.clj +0 -214
- package/compiler/ng_WebPageWriter.clj +0 -39
- package/compiler/ng_jsonParser.clj +0 -340
- package/compiler/ng_p_test.clj +0 -1711
- package/compiler/ng_parser.clj +0 -911
- package/compiler/ng_parser2.clj +0 -735
- package/compiler/ng_parser2_backup.clj +0 -1679
- package/compiler/ng_parser_backup.clj +0 -886
- package/compiler/ng_parser_ok.clj +0 -1718
- package/compiler/ng_parser_ok2.clj +0 -1717
- package/compiler/ng_parser_std_match.clj +0 -687
- package/compiler/ng_parser_std_match2.clj +0 -1012
- package/compiler/ng_parser_v2.clj +0 -1251
- package/compiler/ng_ui.clj +0 -403
- package/compiler/ng_ui_test.clj +0 -18
- package/compiler/ng_writer.clj +0 -338
- package/compiler/ng_xmlParser.clj +0 -472
- package/compiler/ng_xmlParser2.clj +0 -317
- package/compiler/ng_xmlParser3.clj +0 -251
- package/compiler/opdoc.bat +0 -4
- package/compiler/operators.md +0 -290
- package/compiler/p.bat +0 -4
- package/compiler/package.json +0 -10
- package/compiler/pcmd.bat +0 -4
- package/compiler/pcmd2.bat +0 -3
- package/compiler/plaintext_plugin.clj +0 -69
- package/compiler/plugin.bat +0 -19
- package/compiler/plugin2.bat +0 -4
- package/compiler/plugin_app.bat +0 -3
- package/compiler/plugin_apps.clj +0 -27
- package/compiler/plugins.bat +0 -10
- package/compiler/reveal_plugin.clj +0 -409
- package/compiler/simplePlugin.clj +0 -780
- package/compiler/t.bat +0 -3
- package/compiler/test_any.clj +0 -43
- package/compiler/test_call.clj +0 -141
- package/compiler/test_chain.clj +0 -79
- package/compiler/test_json.clj +0 -10
- package/compiler/test_lambda.clj +0 -153
- package/compiler/test_pcmd.clj +0 -32
- package/compiler/test_pcmd2.clj +0 -29
- package/compiler/test_plugin.clj +0 -237
- package/compiler/test_readfile.clj +0 -13
- package/compiler/test_reveal.clj +0 -19
- package/compiler/test_slides.clj +0 -312
- package/compiler/test_types.clj +0 -143
- package/compiler/test_types2.clj +0 -49
- package/compiler/test_types3.clj +0 -53
- package/compiler/test_var.clj +0 -40
- package/compiler/tonpm.bat +0 -14
- package/compiler/tonpm2.bat +0 -12
- package/compiler/ui_plugin.clj +0 -507
- package/compiler/ui_plugin2.clj +0 -427
- package/compiler/update-git.bat +0 -3
- package/compiler/vcomp.bat +0 -4
- package/compiler/viewbuilder_Android.clj +0 -176
- package/compiler/viewbuilder_Web.clj +0 -105
- package/dist/bin/api.js +0 -32422
- package/dist/bin/compiler.d.ts +0 -1638
- package/dist/bin/compiler.js +0 -32444
- package/examples/3D/bin/test_3d.js +0 -329
- package/examples/3D/test_3d.clj +0 -385
- package/examples/EVGColor/EVGColor.clj +0 -310
- package/examples/EVGColor/EVGColorContext.clj +0 -176
- package/examples/EVGColor/bin/EVGColor.js +0 -286
- package/examples/EVGColor/bin/minimized.js +0 -286
- package/examples/SVGPath/SVGPath.clj +0 -625
- package/examples/SVGPath/Vec2.clj +0 -103
- package/examples/SVGPath/bin/SVGPath.cpp +0 -887
- package/examples/SVGPath/bin/SVGPath.js +0 -682
- package/examples/SVGPath/bin/SVGPath.ts +0 -711
- package/examples/SVGPath/bin/minimized.js +0 -578
- package/examples/SVGPath/bin/variant.hpp +0 -2416
- package/examples/minification/Vec2.clj +0 -103
- package/examples/minification/bin/minified.js +0 -44
- package/examples/minification/bin/test.js +0 -117
- package/examples/minification/test.clj +0 -13
- package/fiddle/VirtualCompiler.js +0 -23495
- package/fiddle/browser_editor.js +0 -13240
- package/fiddle/compileEnv.js +0 -1
- package/fiddle/compileEnv.json +0 -1
- package/fiddle/lang_data.js +0 -1
- package/index.html +0 -18
- package/native/httpd/HttpTester.clj +0 -33
- package/native/httpd/RangerWebService.clj +0 -81
- package/operators.md +0 -290
- package/tsconfig.json +0 -29
- package/versions/cpp/compiler.cpp +0 -15032
- package/versions/es6/compiler.js +0 -12860
- package/versions/go/compiler.go +0 -21338
- package/versions/java/AfterCodeNode.java +0 -4
- package/versions/java/ClassJoinPoint.java +0 -6
- package/versions/java/CodeFile.java +0 -42
- package/versions/java/CodeFileSystem.java +0 -72
- package/versions/java/CodeNode.java +0 -807
- package/versions/java/CodeSlice.java +0 -13
- package/versions/java/CodeWriter.java +0 -185
- package/versions/java/ColorConsole.java +0 -8
- package/versions/java/CompilerInterface.java +0 -213
- package/versions/java/DictNode.java +0 -353
- package/versions/java/LiveCompiler.java +0 -772
- package/versions/java/NodeEvalState.java +0 -24
- package/versions/java/OpFindResult.java +0 -6
- package/versions/java/RangerAppArrayValue.java +0 -7
- package/versions/java/RangerAppClassDesc.java +0 -217
- package/versions/java/RangerAppEnum.java +0 -14
- package/versions/java/RangerAppFunctionDesc.java +0 -20
- package/versions/java/RangerAppHashValue.java +0 -11
- package/versions/java/RangerAppInterfaceImpl.java +0 -6
- package/versions/java/RangerAppMethodVariants.java +0 -6
- package/versions/java/RangerAppParamDesc.java +0 -321
- package/versions/java/RangerAppTodo.java +0 -6
- package/versions/java/RangerAppValue.java +0 -10
- package/versions/java/RangerAppWriterContext.java +0 -800
- package/versions/java/RangerArgMatch.java +0 -317
- package/versions/java/RangerBackReference.java +0 -7
- package/versions/java/RangerCSharpClassWriter.java +0 -287
- package/versions/java/RangerCompilerMessage.java +0 -9
- package/versions/java/RangerCppClassWriter.java +0 -725
- package/versions/java/RangerFlowParser.java +0 -2142
- package/versions/java/RangerGenericClassWriter.java +0 -367
- package/versions/java/RangerGolangClassWriter.java +0 -1379
- package/versions/java/RangerJava7ClassWriter.java +0 -652
- package/versions/java/RangerJavaScriptClassWriter.java +0 -305
- package/versions/java/RangerKotlinClassWriter.java +0 -380
- package/versions/java/RangerLispParser.java +0 -845
- package/versions/java/RangerNodeValue.java +0 -9
- package/versions/java/RangerPHPClassWriter.java +0 -527
- package/versions/java/RangerParamEventHandler.java +0 -6
- package/versions/java/RangerParamEventList.java +0 -5
- package/versions/java/RangerParamEventMap.java +0 -27
- package/versions/java/RangerRangerClassWriter.java +0 -268
- package/versions/java/RangerRefForce.java +0 -7
- package/versions/java/RangerScalaClassWriter.java +0 -365
- package/versions/java/RangerSerializeClass.java +0 -148
- package/versions/java/RangerSwift3ClassWriter.java +0 -548
- package/versions/java/RangerTypeClass.java +0 -17
- package/versions/java/SourceCode.java +0 -65
- package/versions/php/compiler.php +0 -13830
- package/versions/swift3/compiler.swift +0 -12542
- /package/{lib/ACEEditor.clj → dist/lib/ACEEditor.rgr} +0 -0
- /package/{lib/SQL.clj → dist/lib/SQL.rgr} +0 -0
- /package/{lib/ServiceLib.clj → dist/lib/ServiceLib.rgr} +0 -0
- /package/{lib/Time.clj → dist/lib/Time.rgr} +0 -0
- /package/{lib/TypedArrays.clj → dist/lib/TypedArrays.rgr} +0 -0
- /package/{lib/WebLib.clj → dist/lib/WebLib.rgr} +0 -0
- /package/{lib/WebServerLib.clj → dist/lib/WebServerLib.rgr} +0 -0
|
@@ -1,839 +0,0 @@
|
|
|
1
|
-
Import "TFactory.clj"
|
|
2
|
-
Import "TTypes.clj"
|
|
3
|
-
|
|
4
|
-
class CallChain {
|
|
5
|
-
def methodName:string ""
|
|
6
|
-
def method@(weak):CodeNode
|
|
7
|
-
def args@(weak):CodeNode
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
class NodeEvalState {
|
|
11
|
-
def ctx@(weak):RangerAppWriterContext
|
|
12
|
-
def is_running:boolean false
|
|
13
|
-
|
|
14
|
-
def child_index:int -1
|
|
15
|
-
def cmd_index:int -1
|
|
16
|
-
|
|
17
|
-
def is_ready:boolean false
|
|
18
|
-
def is_waiting:boolean false
|
|
19
|
-
|
|
20
|
-
def exit_after:boolean false
|
|
21
|
-
def expand_args:boolean false
|
|
22
|
-
|
|
23
|
-
def ask_expand:boolean false
|
|
24
|
-
def eval_rest:boolean false
|
|
25
|
-
def exec_cnt:int 0
|
|
26
|
-
def b_debugger:boolean false
|
|
27
|
-
def b_top_node:boolean false
|
|
28
|
-
|
|
29
|
-
def ask_eval:boolean false
|
|
30
|
-
def param_eval_on:boolean false
|
|
31
|
-
def eval_index:int -1
|
|
32
|
-
def eval_end_index:int -1
|
|
33
|
-
def ask_eval_start:int 0
|
|
34
|
-
def ask_eval_end:int 0
|
|
35
|
-
def evaluating_cmd@(weak):CodeNode
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
extension CodeNode {
|
|
39
|
-
|
|
40
|
-
; the evaluated type class...
|
|
41
|
-
;
|
|
42
|
-
def definedTypeClass@(weak):RangerTypeClass
|
|
43
|
-
def evalTypeClass@(weak):RangerTypeClass
|
|
44
|
-
|
|
45
|
-
def lambda_ctx:RangerAppWriterContext
|
|
46
|
-
def nsp@(weak):[RangerAppParamDesc]
|
|
47
|
-
def eval_type:RangerNodeType RangerNodeType.NoType
|
|
48
|
-
def eval_type_name:string ""
|
|
49
|
-
def eval_key_type:string ""
|
|
50
|
-
def eval_array_type:string ""
|
|
51
|
-
def eval_function@(weak):CodeNode
|
|
52
|
-
def flow_done:boolean false
|
|
53
|
-
def ref_change_done:boolean false
|
|
54
|
-
def eval_type_node:CodeNode
|
|
55
|
-
|
|
56
|
-
def didReturnAtIndex:int -1
|
|
57
|
-
def hasVarDef:boolean false
|
|
58
|
-
def hasClassDescription:boolean false
|
|
59
|
-
def hasNewOper:boolean false
|
|
60
|
-
def clDesc@(weak):RangerAppClassDesc
|
|
61
|
-
def hasFnCall:boolean false
|
|
62
|
-
def fnDesc:RangerAppFunctionDesc
|
|
63
|
-
def lambdaFnDesc@(weak):RangerAppFunctionDesc
|
|
64
|
-
def hasParamDesc:boolean false
|
|
65
|
-
def paramDesc@(weak optional):RangerAppParamDesc
|
|
66
|
-
def ownParamDesc@(optional):RangerAppParamDesc
|
|
67
|
-
def evalCtx@(weak):RangerAppWriterContext
|
|
68
|
-
def evalState:NodeEvalState
|
|
69
|
-
|
|
70
|
-
def operator_node@(weak):CodeNode
|
|
71
|
-
def flow_ctx@(weak):RangerAppWriterContext
|
|
72
|
-
|
|
73
|
-
def is_part_of_chain false
|
|
74
|
-
def methodChain:[CallChain]
|
|
75
|
-
|
|
76
|
-
def chainTarget:CodeNode
|
|
77
|
-
|
|
78
|
-
def register_set false
|
|
79
|
-
def did_walk false
|
|
80
|
-
def reg_compiled_name ""
|
|
81
|
-
|
|
82
|
-
; tag for debugging the nodes if necessary...
|
|
83
|
-
def tag ""
|
|
84
|
-
def matched_type ""
|
|
85
|
-
|
|
86
|
-
fn isParsedAsPrimitive:boolean () {
|
|
87
|
-
return (TTypes.isPrimitive(parsed_type))
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
; fn isPrimitive:boolean () {
|
|
91
|
-
; return (TTypes.isPrimitive(value_type))
|
|
92
|
-
; }
|
|
93
|
-
fn isPrimitiveType:boolean () {
|
|
94
|
-
return (TTypes.isPrimitive((TTypes.nameToValue(type_name))))
|
|
95
|
-
}
|
|
96
|
-
fn isAPrimitiveType:boolean () {
|
|
97
|
-
return (TTypes.isPrimitive((TTypes.nameToValue(array_type))))
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
fn writeCode:void (wr:CodeWriter) {
|
|
102
|
-
switch value_type {
|
|
103
|
-
case RangerNodeType.Double {
|
|
104
|
-
wr.out((double2str double_value) false)
|
|
105
|
-
}
|
|
106
|
-
case RangerNodeType.String {
|
|
107
|
-
wr.out(((strfromcode 34) + string_value + (strfromcode 34)) false)
|
|
108
|
-
}
|
|
109
|
-
case RangerNodeType.Integer {
|
|
110
|
-
wr.out( "" + int_value , false)
|
|
111
|
-
}
|
|
112
|
-
case RangerNodeType.Boolean {
|
|
113
|
-
if(boolean_value) {
|
|
114
|
-
wr.out("true" false)
|
|
115
|
-
} {
|
|
116
|
-
wr.out("false" false)
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
case RangerNodeType.VRef {
|
|
120
|
-
wr.out(vref false)
|
|
121
|
-
if(has type_name) {
|
|
122
|
-
wr.out(":" + type_name , false)
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
case RangerNodeType.Hash {
|
|
126
|
-
wr.out(vref false)
|
|
127
|
-
wr.out(":[" + key_type + ":" + array_type + "]" , false)
|
|
128
|
-
}
|
|
129
|
-
case RangerNodeType.Array {
|
|
130
|
-
wr.out(vref false)
|
|
131
|
-
wr.out(":[" + array_type + "]" , false)
|
|
132
|
-
}
|
|
133
|
-
case RangerNodeType.ExpressionType {
|
|
134
|
-
wr.out("(fn--> " false) ; "
|
|
135
|
-
for children ch:CodeNode i {
|
|
136
|
-
ch.writeCode(wr)
|
|
137
|
-
}
|
|
138
|
-
wr.out(")" false) ; "
|
|
139
|
-
}
|
|
140
|
-
default {
|
|
141
|
-
if expression {
|
|
142
|
-
wr.out("(" false)
|
|
143
|
-
for children ch:CodeNode i {
|
|
144
|
-
if( i > 0) {
|
|
145
|
-
wr.out(' ' false)
|
|
146
|
-
}
|
|
147
|
-
ch.writeCode(wr)
|
|
148
|
-
}
|
|
149
|
-
wr.out(")" false) ; "
|
|
150
|
-
} {
|
|
151
|
-
if is_block_node {
|
|
152
|
-
wr.out("{" true)
|
|
153
|
-
for children ch:CodeNode i {
|
|
154
|
-
ch.writeCode(wr)
|
|
155
|
-
}
|
|
156
|
-
wr.out("}" true)
|
|
157
|
-
} {
|
|
158
|
-
wr.out("<unknown>" false)
|
|
159
|
-
wr.out("{" true)
|
|
160
|
-
for children ch:CodeNode i {
|
|
161
|
-
ch.writeCode(wr)
|
|
162
|
-
}
|
|
163
|
-
wr.out("}" true)
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
fn createChainTarget() {
|
|
172
|
-
def chCnt (array_length children)
|
|
173
|
-
if( chCnt > 2 ) {
|
|
174
|
-
def fc (this.getFirst())
|
|
175
|
-
; def xyz something
|
|
176
|
-
if(fc.vref == "def" ) {
|
|
177
|
-
chainTarget = (this.getThird())
|
|
178
|
-
}
|
|
179
|
-
; obj = foobba
|
|
180
|
-
if(fc.vref == "=" ) {
|
|
181
|
-
chainTarget = (this.getThird())
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
fn inferDefExpressionTypeFromValue ( node:CodeNode ) {
|
|
187
|
-
def cn (itemAt node.children 1)
|
|
188
|
-
def nodeValue:CodeNode (itemAt node.children 2)
|
|
189
|
-
; print " > Infer value type " + nodeValue.value_type
|
|
190
|
-
; print " > Infer eval_tyåe type " + nodeValue.eval_type
|
|
191
|
-
|
|
192
|
-
if( !null? cn.expression_value ) {
|
|
193
|
-
; print "^ but has expression value"
|
|
194
|
-
cn.value_type = RangerNodeType.ExpressionType
|
|
195
|
-
cn.parsed_type = RangerNodeType.ExpressionType
|
|
196
|
-
cn.has_vref_annotation = true
|
|
197
|
-
|
|
198
|
-
; print "==> expression : " + (cn.expression_value.getCode())
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
if(nodeValue.eval_type == RangerNodeType.ExpressionType) {
|
|
202
|
-
if(!null? nodeValue.expression_value) {
|
|
203
|
-
cn.expression_value = ( nodeValue.expression_value.copy() )
|
|
204
|
-
} {
|
|
205
|
-
if( (null? node.expression_value)) {
|
|
206
|
-
; infer the node type
|
|
207
|
-
def copyOf (nodeValue.rebuildWithType( (new RangerArgMatch () ) false))
|
|
208
|
-
removeLast copyOf.children
|
|
209
|
-
cn.expression_value = copyOf
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
cn.value_type = RangerNodeType.ExpressionType
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
fn inferDefTypeFromValue ( node:CodeNode ) {
|
|
217
|
-
def cn (itemAt node.children 1)
|
|
218
|
-
def nodeValue:CodeNode (itemAt node.children 2)
|
|
219
|
-
|
|
220
|
-
cn.value_type = nodeValue.eval_type
|
|
221
|
-
cn.type_name = nodeValue.eval_type_name
|
|
222
|
-
cn.array_type = nodeValue.eval_array_type
|
|
223
|
-
cn.key_type = nodeValue.eval_key_type
|
|
224
|
-
|
|
225
|
-
if(nodeValue.eval_type == RangerNodeType.ExpressionType) {
|
|
226
|
-
if(!null? nodeValue.expression_value) {
|
|
227
|
-
cn.expression_value = ( nodeValue.expression_value.copy() )
|
|
228
|
-
} {
|
|
229
|
-
if( (null? node.expression_value)) {
|
|
230
|
-
; infer the node type
|
|
231
|
-
def copyOf (nodeValue.rebuildWithType( (new RangerArgMatch () ) false))
|
|
232
|
-
removeLast copyOf.children
|
|
233
|
-
cn.expression_value = copyOf
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
cn.type_name = ""
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
fn getCode:string () {
|
|
241
|
-
def wr:CodeWriter (new CodeWriter ())
|
|
242
|
-
this.writeCode(wr)
|
|
243
|
-
return (wr.getCode())
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
; cleans away the flow parser information from the node...
|
|
247
|
-
fn cleanNode ( ) {
|
|
248
|
-
|
|
249
|
-
def cp@(temp) this
|
|
250
|
-
|
|
251
|
-
nullify cp.evalTypeClass
|
|
252
|
-
nullify cp.lambda_ctx
|
|
253
|
-
clear cp.nsp
|
|
254
|
-
|
|
255
|
-
cp.eval_type = RangerNodeType.NoType
|
|
256
|
-
cp.eval_type_name = ""
|
|
257
|
-
cp.eval_key_type = ""
|
|
258
|
-
cp.eval_array_type = ""
|
|
259
|
-
|
|
260
|
-
nullify cp.eval_function
|
|
261
|
-
cp.flow_done = false
|
|
262
|
-
cp.ref_change_done = false
|
|
263
|
-
nullify cp.eval_type_node
|
|
264
|
-
cp.didReturnAtIndex = -1
|
|
265
|
-
cp.hasVarDef = false
|
|
266
|
-
cp.hasClassDescription = false
|
|
267
|
-
cp.hasNewOper = false
|
|
268
|
-
nullify cp.clDesc
|
|
269
|
-
cp.hasFnCall = false
|
|
270
|
-
nullify cp.fnDesc
|
|
271
|
-
cp.hasParamDesc = false
|
|
272
|
-
nullify cp.paramDesc
|
|
273
|
-
nullify cp.ownParamDesc
|
|
274
|
-
nullify cp.evalCtx
|
|
275
|
-
nullify cp.evalState
|
|
276
|
-
nullify cp.operator_node
|
|
277
|
-
nullify cp.flow_ctx
|
|
278
|
-
cp.is_part_of_chain = false
|
|
279
|
-
clear cp.methodChain
|
|
280
|
-
nullify cp.chainTarget
|
|
281
|
-
cp.tag = ""
|
|
282
|
-
|
|
283
|
-
cp.has_operator = false
|
|
284
|
-
cp.disabled_node = false
|
|
285
|
-
cp.op_index = 0
|
|
286
|
-
cp.is_array_literal = false
|
|
287
|
-
cp.is_system_class = false
|
|
288
|
-
cp.is_plugin = false
|
|
289
|
-
|
|
290
|
-
cp.mutable_def = false
|
|
291
|
-
cp.has_lambda = false
|
|
292
|
-
cp.has_lambda_call = false
|
|
293
|
-
cp.has_call = false
|
|
294
|
-
|
|
295
|
-
cp.type_type = type_type
|
|
296
|
-
cp.value_type = parsed_type
|
|
297
|
-
|
|
298
|
-
; TODO:
|
|
299
|
-
|
|
300
|
-
; def has_vref_annotation:boolean false
|
|
301
|
-
; def vref_annotation:CodeNode
|
|
302
|
-
; def has_type_annotation:boolean false
|
|
303
|
-
; def type_annotation:CodeNode
|
|
304
|
-
; def ref_type:RangerNodeRefType RangerNodeRefType.NoType
|
|
305
|
-
; def ref_need_assign:int 0
|
|
306
|
-
; def expression_value:CodeNode
|
|
307
|
-
; def props:[string:CodeNode]
|
|
308
|
-
; def prop_keys:[string]
|
|
309
|
-
; def comments:[CodeNode]
|
|
310
|
-
; def children:[CodeNode]
|
|
311
|
-
; def parent@(weak):CodeNode
|
|
312
|
-
; def attrs:[CodeNode]
|
|
313
|
-
; def appGUID:string ""
|
|
314
|
-
; def register_name:string ""
|
|
315
|
-
|
|
316
|
-
cp.children.forEach({
|
|
317
|
-
item.cleanNode()
|
|
318
|
-
})
|
|
319
|
-
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
; creates copy that should be ready to be re-compiled
|
|
323
|
-
fn cleanCopy:CodeNode () {
|
|
324
|
-
def match (new RangerArgMatch)
|
|
325
|
-
def cp (this.rebuildWithType( match false))
|
|
326
|
-
cp.cleanNode()
|
|
327
|
-
return cp
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
fn copy:CodeNode () {
|
|
331
|
-
def match (new RangerArgMatch)
|
|
332
|
-
def cp (this.rebuildWithType( match false))
|
|
333
|
-
cp.register_expressions = (clone this.register_expressions)
|
|
334
|
-
return cp
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
fn clone:CodeNode () {
|
|
338
|
-
def match (new RangerArgMatch)
|
|
339
|
-
def cp (this.cloneWithType( match false))
|
|
340
|
-
return cp
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
fn push (node@(strong):CodeNode) {
|
|
344
|
-
push this.children node
|
|
345
|
-
node.parent = this
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
fn add (node@(strong):CodeNode) {
|
|
349
|
-
push this.children node
|
|
350
|
-
node.parent = this
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
fn newVRefNode:CodeNode (name:string) {
|
|
354
|
-
def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
|
|
355
|
-
newNode.vref = name
|
|
356
|
-
newNode.value_type = RangerNodeType.VRef
|
|
357
|
-
newNode.parsed_type = RangerNodeType.VRef
|
|
358
|
-
newNode.ns = (strsplit name ".")
|
|
359
|
-
return newNode
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
fn newStringNode:CodeNode (name:string) {
|
|
363
|
-
def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
|
|
364
|
-
newNode.string_value = name
|
|
365
|
-
newNode.value_type = RangerNodeType.String
|
|
366
|
-
newNode.parsed_type = RangerNodeType.VRef
|
|
367
|
-
return newNode
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
fn newExpressionNode:CodeNode () {
|
|
371
|
-
def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
|
|
372
|
-
newNode.expression = true
|
|
373
|
-
return newNode
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
fn getChildrenFrom (otherNode:CodeNode) {
|
|
378
|
-
clear this.children
|
|
379
|
-
for otherNode.children ch@(lives):CodeNode i {
|
|
380
|
-
this.push(ch)
|
|
381
|
-
ch.parent = this
|
|
382
|
-
}
|
|
383
|
-
clear otherNode.children
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
fn cloneWithType:CodeNode (match:RangerArgMatch changeVref:boolean) {
|
|
387
|
-
def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
|
|
388
|
-
if( has match.nodes vref) {
|
|
389
|
-
def ast (unwrap (get match.nodes vref))
|
|
390
|
-
return (ast.rebuildWithType(match true))
|
|
391
|
-
}
|
|
392
|
-
newNode.has_operator = has_operator
|
|
393
|
-
newNode.op_index = op_index
|
|
394
|
-
newNode.mutable_def = mutable_def
|
|
395
|
-
newNode.expression = expression
|
|
396
|
-
newNode.register_name = register_name
|
|
397
|
-
newNode.operator_node = operator_node
|
|
398
|
-
if changeVref {
|
|
399
|
-
newNode.vref = (match.getTypeName(vref))
|
|
400
|
-
} {
|
|
401
|
-
newNode.vref = vref
|
|
402
|
-
}
|
|
403
|
-
newNode.is_block_node = is_block_node
|
|
404
|
-
newNode.type_type = (match.getTypeName(type_type))
|
|
405
|
-
newNode.type_name = (match.getTypeName(type_name))
|
|
406
|
-
newNode.key_type = (match.getTypeName(key_type))
|
|
407
|
-
newNode.array_type = (match.getTypeName(array_type))
|
|
408
|
-
newNode.value_type = value_type
|
|
409
|
-
newNode.parsed_type = parsed_type
|
|
410
|
-
|
|
411
|
-
newNode.copyEvalResFrom( this )
|
|
412
|
-
newNode.register_expressions = (clone this.register_expressions)
|
|
413
|
-
|
|
414
|
-
if has_vref_annotation {
|
|
415
|
-
newNode.has_vref_annotation = true
|
|
416
|
-
def ann:CodeNode vref_annotation
|
|
417
|
-
newNode.vref_annotation = (ann.cloneWithType(match true))
|
|
418
|
-
}
|
|
419
|
-
if has_type_annotation {
|
|
420
|
-
newNode.has_type_annotation = true
|
|
421
|
-
def t_ann:CodeNode type_annotation
|
|
422
|
-
newNode.type_annotation = (t_ann.cloneWithType(match true))
|
|
423
|
-
}
|
|
424
|
-
for ns n:string i {
|
|
425
|
-
if changeVref {
|
|
426
|
-
def new_ns (match.getTypeName(n))
|
|
427
|
-
push newNode.ns new_ns
|
|
428
|
-
} {
|
|
429
|
-
newNode.vref = vref
|
|
430
|
-
push newNode.ns n
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
newNode.string_value = string_value
|
|
434
|
-
switch value_type {
|
|
435
|
-
case RangerNodeType.Double {
|
|
436
|
-
newNode.double_value = double_value
|
|
437
|
-
}
|
|
438
|
-
case RangerNodeType.String {
|
|
439
|
-
newNode.string_value = string_value
|
|
440
|
-
}
|
|
441
|
-
case RangerNodeType.Integer {
|
|
442
|
-
newNode.int_value = int_value
|
|
443
|
-
}
|
|
444
|
-
case RangerNodeType.Boolean {
|
|
445
|
-
newNode.boolean_value = boolean_value
|
|
446
|
-
}
|
|
447
|
-
case RangerNodeType.ExpressionType {
|
|
448
|
-
if (!null? expression_value) {
|
|
449
|
-
newNode.expression_value = (expression_value.cloneWithType(match changeVref))
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
for prop_keys key:string i {
|
|
454
|
-
push newNode.prop_keys key
|
|
455
|
-
def oldp:CodeNode (get props key)
|
|
456
|
-
def np:CodeNode (oldp.cloneWithType(match changeVref))
|
|
457
|
-
set newNode.props key np
|
|
458
|
-
}
|
|
459
|
-
for children ch:CodeNode i {
|
|
460
|
-
def newCh:CodeNode (ch.cloneWithType(match changeVref))
|
|
461
|
-
newCh.parent = newNode
|
|
462
|
-
push newNode.children newCh
|
|
463
|
-
}
|
|
464
|
-
for attrs ch:CodeNode i {
|
|
465
|
-
def newCh:CodeNode (ch.rebuildWithType(match changeVref))
|
|
466
|
-
push newNode.attrs newCh
|
|
467
|
-
}
|
|
468
|
-
return newNode
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
fn rebuildWithType:CodeNode (match:RangerArgMatch changeVref:boolean) {
|
|
473
|
-
|
|
474
|
-
def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
|
|
475
|
-
if( has match.nodes vref) {
|
|
476
|
-
def ast (unwrap (get match.nodes vref))
|
|
477
|
-
; can not rebuild using the same node :/
|
|
478
|
-
if( ast == this) {
|
|
479
|
-
def tmp@(temp) this
|
|
480
|
-
return tmp
|
|
481
|
-
}
|
|
482
|
-
; print "--> changin " + vref + " to " + (this.getCode()) + " from " + (ast.getCode())
|
|
483
|
-
def newNode@(tmp lives) (ast.rebuildWithType(match true))
|
|
484
|
-
set match.builtNodes vref newNode
|
|
485
|
-
return newNode
|
|
486
|
-
}
|
|
487
|
-
newNode.has_operator = has_operator
|
|
488
|
-
newNode.op_index = op_index
|
|
489
|
-
newNode.mutable_def = mutable_def
|
|
490
|
-
newNode.expression = expression
|
|
491
|
-
newNode.register_name = register_name
|
|
492
|
-
newNode.reg_compiled_name = reg_compiled_name
|
|
493
|
-
newNode.operator_node = operator_node
|
|
494
|
-
newNode.matched_type = matched_type
|
|
495
|
-
if changeVref {
|
|
496
|
-
newNode.vref = (match.getTypeName(vref))
|
|
497
|
-
} {
|
|
498
|
-
newNode.vref = vref
|
|
499
|
-
}
|
|
500
|
-
newNode.is_block_node = is_block_node
|
|
501
|
-
newNode.type_type = (match.getTypeName(type_type))
|
|
502
|
-
newNode.type_name = (match.getTypeName(type_name))
|
|
503
|
-
newNode.key_type = (match.getTypeName(key_type))
|
|
504
|
-
newNode.array_type = (match.getTypeName(array_type))
|
|
505
|
-
newNode.value_type = value_type
|
|
506
|
-
newNode.parsed_type = parsed_type
|
|
507
|
-
if has_vref_annotation {
|
|
508
|
-
newNode.has_vref_annotation = true
|
|
509
|
-
def ann:CodeNode vref_annotation
|
|
510
|
-
newNode.vref_annotation = (ann.rebuildWithType(match true))
|
|
511
|
-
}
|
|
512
|
-
if has_type_annotation {
|
|
513
|
-
newNode.has_type_annotation = true
|
|
514
|
-
def t_ann:CodeNode type_annotation
|
|
515
|
-
newNode.type_annotation = (t_ann.rebuildWithType(match true))
|
|
516
|
-
}
|
|
517
|
-
for ns n:string i {
|
|
518
|
-
if changeVref {
|
|
519
|
-
def new_ns (match.getTypeName(n))
|
|
520
|
-
push newNode.ns new_ns
|
|
521
|
-
} {
|
|
522
|
-
newNode.vref = vref
|
|
523
|
-
push newNode.ns n
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
newNode.string_value = string_value
|
|
527
|
-
switch value_type {
|
|
528
|
-
case RangerNodeType.Double {
|
|
529
|
-
newNode.double_value = double_value
|
|
530
|
-
}
|
|
531
|
-
case RangerNodeType.String {
|
|
532
|
-
newNode.string_value = string_value
|
|
533
|
-
}
|
|
534
|
-
case RangerNodeType.Integer {
|
|
535
|
-
newNode.int_value = int_value
|
|
536
|
-
}
|
|
537
|
-
case RangerNodeType.Boolean {
|
|
538
|
-
newNode.boolean_value = boolean_value
|
|
539
|
-
}
|
|
540
|
-
case RangerNodeType.ExpressionType {
|
|
541
|
-
if (!null? expression_value) {
|
|
542
|
-
newNode.expression_value = (expression_value.rebuildWithType(match changeVref))
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
for prop_keys key:string i {
|
|
547
|
-
push newNode.prop_keys key
|
|
548
|
-
def oldp:CodeNode (get props key)
|
|
549
|
-
def np:CodeNode (oldp.rebuildWithType(match changeVref))
|
|
550
|
-
set newNode.props key np
|
|
551
|
-
}
|
|
552
|
-
for children ch:CodeNode i {
|
|
553
|
-
def newCh:CodeNode (ch.rebuildWithType(match changeVref))
|
|
554
|
-
newCh.parent = newNode
|
|
555
|
-
push newNode.children newCh
|
|
556
|
-
}
|
|
557
|
-
for attrs ch:CodeNode i {
|
|
558
|
-
def newCh:CodeNode (ch.rebuildWithType(match changeVref))
|
|
559
|
-
push newNode.attrs newCh
|
|
560
|
-
}
|
|
561
|
-
return newNode
|
|
562
|
-
}
|
|
563
|
-
fn buildTypeSignatureUsingMatch:string (match:RangerArgMatch) {
|
|
564
|
-
def tName:string (match.getTypeName(type_name))
|
|
565
|
-
switch tName {
|
|
566
|
-
case "double" {
|
|
567
|
-
return "double"
|
|
568
|
-
}
|
|
569
|
-
case "string" {
|
|
570
|
-
return "string"
|
|
571
|
-
}
|
|
572
|
-
case "integer" {
|
|
573
|
-
return "int"
|
|
574
|
-
}
|
|
575
|
-
case "boolean" {
|
|
576
|
-
return "boolean"
|
|
577
|
-
}
|
|
578
|
-
}
|
|
579
|
-
def s:string ""
|
|
580
|
-
if (value_type == RangerNodeType.Array) {
|
|
581
|
-
s = (s + "[")
|
|
582
|
-
s = (s + (match.getTypeName(array_type)))
|
|
583
|
-
s = (s + (this.getTypeSignatureWithMatch(match)))
|
|
584
|
-
s = (s + "]")
|
|
585
|
-
return s
|
|
586
|
-
}
|
|
587
|
-
if (value_type == RangerNodeType.Hash) {
|
|
588
|
-
s = (s + "[")
|
|
589
|
-
s = (s + (match.getTypeName(key_type)))
|
|
590
|
-
s = (s + ":")
|
|
591
|
-
s = (s + (match.getTypeName(array_type)))
|
|
592
|
-
s = (s + (this.getTypeSignatureWithMatch(match)))
|
|
593
|
-
s = (s + "]")
|
|
594
|
-
return s
|
|
595
|
-
}
|
|
596
|
-
s = (match.getTypeName(type_name))
|
|
597
|
-
s = (s + (this.getVRefSignatureWithMatch(match)))
|
|
598
|
-
return s
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
fn buildTypeSignature:string () {
|
|
602
|
-
if(this.hasFlag('keyword')) {
|
|
603
|
-
return (this.vref + "::keyword")
|
|
604
|
-
}
|
|
605
|
-
if( TTypes.isPrimitive( value_type ) ) {
|
|
606
|
-
return (TTypes.valueAsString(value_type))
|
|
607
|
-
}
|
|
608
|
-
def s:string ""
|
|
609
|
-
if (value_type == RangerNodeType.Array) {
|
|
610
|
-
s = (s + "[")
|
|
611
|
-
s = (s + array_type)
|
|
612
|
-
s = (s + (this.getTypeSignature()))
|
|
613
|
-
s = (s + "]")
|
|
614
|
-
return s
|
|
615
|
-
}
|
|
616
|
-
if (value_type == RangerNodeType.Hash) {
|
|
617
|
-
s = (s + "[")
|
|
618
|
-
s = (s + key_type)
|
|
619
|
-
s = (s + ":")
|
|
620
|
-
s = (s + array_type)
|
|
621
|
-
s = (s + (this.getTypeSignature()))
|
|
622
|
-
s = (s + "]")
|
|
623
|
-
return s
|
|
624
|
-
}
|
|
625
|
-
if (value_type == RangerNodeType.ExpressionType) {
|
|
626
|
-
def fnNode (expression_value.getFirst())
|
|
627
|
-
def argNode (expression_value.getSecond())
|
|
628
|
-
s = s + "(_:" + (fnNode.buildTypeSignature())
|
|
629
|
-
s = s + " (" + (join (map argNode.children {
|
|
630
|
-
return ("_:" + (item.buildTypeSignature()))
|
|
631
|
-
} to:[string]) " ") + "))"
|
|
632
|
-
return s
|
|
633
|
-
}
|
|
634
|
-
s = type_name
|
|
635
|
-
return s
|
|
636
|
-
}
|
|
637
|
-
|
|
638
|
-
fn getVRefSignatureWithMatch:string (match:RangerArgMatch) {
|
|
639
|
-
if has_vref_annotation {
|
|
640
|
-
def nn:CodeNode (vref_annotation.rebuildWithType(match true))
|
|
641
|
-
return ("@" + (nn.getCode()))
|
|
642
|
-
}
|
|
643
|
-
return ""
|
|
644
|
-
}
|
|
645
|
-
fn getVRefSignature:string () {
|
|
646
|
-
if has_vref_annotation {
|
|
647
|
-
return ("@" + (vref_annotation.getCode()))
|
|
648
|
-
}
|
|
649
|
-
return ""
|
|
650
|
-
}
|
|
651
|
-
fn getTypeSignatureWithMatch:string (match:RangerArgMatch) {
|
|
652
|
-
if has_type_annotation {
|
|
653
|
-
def nn:CodeNode (type_annotation.rebuildWithType(match true))
|
|
654
|
-
return ("@" + (nn.getCode()))
|
|
655
|
-
}
|
|
656
|
-
return ""
|
|
657
|
-
}
|
|
658
|
-
fn getTypeSignature:string () {
|
|
659
|
-
if has_type_annotation {
|
|
660
|
-
return ("@" + (type_annotation.getCode()))
|
|
661
|
-
}
|
|
662
|
-
return ""
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
fn typeNameAsType:RangerNodeType (ctx:RangerAppWriterContext) {
|
|
667
|
-
if(value_type == RangerNodeType.ExpressionType || eval_type == RangerNodeType.ExpressionType ) {
|
|
668
|
-
return RangerNodeType.ExpressionType
|
|
669
|
-
}
|
|
670
|
-
def conv (TTypes.nameToValue(type_name))
|
|
671
|
-
if(conv != RangerNodeType.NoType) {
|
|
672
|
-
return conv
|
|
673
|
-
}
|
|
674
|
-
if (== true expression) {
|
|
675
|
-
(return RangerNodeType.ExpressionType)
|
|
676
|
-
}
|
|
677
|
-
if (== value_type RangerNodeType.VRef) {
|
|
678
|
-
if(ctx.isEnumDefined(type_name)) {
|
|
679
|
-
return RangerNodeType.Enum
|
|
680
|
-
}
|
|
681
|
-
if(ctx.isDefinedClass(type_name)) {
|
|
682
|
-
return RangerNodeType.Object
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
return value_type
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
fn copyEvalResFrom:void (node:CodeNode) {
|
|
689
|
-
if node.hasParamDesc {
|
|
690
|
-
hasParamDesc = node.hasParamDesc
|
|
691
|
-
paramDesc = node.paramDesc
|
|
692
|
-
}
|
|
693
|
-
if (!null? node.evalTypeClass) {
|
|
694
|
-
evalTypeClass = node.evalTypeClass
|
|
695
|
-
}
|
|
696
|
-
eval_type = node.eval_type
|
|
697
|
-
eval_type_name = node.eval_type_name
|
|
698
|
-
|
|
699
|
-
; here -> get optionality from operator if possible
|
|
700
|
-
if( !null? node.operator_node ) {
|
|
701
|
-
def nn (itemAt node.operator_node.children 1 )
|
|
702
|
-
if (nn.hasFlag("optional")) {
|
|
703
|
-
this.setFlag("optional")
|
|
704
|
-
}
|
|
705
|
-
if( nn.hasFlag("immutable")) {
|
|
706
|
-
this.setFlag("immutable")
|
|
707
|
-
}
|
|
708
|
-
} {
|
|
709
|
-
if (node.hasFlag("optional")) {
|
|
710
|
-
this.setFlag("optional")
|
|
711
|
-
}
|
|
712
|
-
if( node.hasFlag("immutable")) {
|
|
713
|
-
this.setFlag("immutable")
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
eval_key_type = node.eval_key_type
|
|
718
|
-
eval_array_type = node.eval_array_type
|
|
719
|
-
if (node.value_type == RangerNodeType.Hash) {
|
|
720
|
-
eval_type = RangerNodeType.Hash
|
|
721
|
-
}
|
|
722
|
-
if (node.value_type == RangerNodeType.Array) {
|
|
723
|
-
eval_type = RangerNodeType.Array
|
|
724
|
-
}
|
|
725
|
-
if( node.value_type == RangerNodeType.ExpressionType ) {
|
|
726
|
-
eval_type = RangerNodeType.ExpressionType
|
|
727
|
-
eval_function = node.eval_function
|
|
728
|
-
}
|
|
729
|
-
|
|
730
|
-
}
|
|
731
|
-
|
|
732
|
-
fn defineNodeTypeTo:void (node:CodeNode ctx:RangerAppWriterContext) {
|
|
733
|
-
; TODO: this function may have some problems
|
|
734
|
-
if(node.value_type == RangerNodeType.ExpressionType || node.eval_type == RangerNodeType.ExpressionType ) {
|
|
735
|
-
return
|
|
736
|
-
}
|
|
737
|
-
|
|
738
|
-
switch type_name {
|
|
739
|
-
case "double" {
|
|
740
|
-
node.value_type = RangerNodeType.Double
|
|
741
|
-
node.eval_type = RangerNodeType.Double
|
|
742
|
-
node.eval_type_name = "double"
|
|
743
|
-
}
|
|
744
|
-
case "int" {
|
|
745
|
-
node.value_type = RangerNodeType.Integer
|
|
746
|
-
node.eval_type = RangerNodeType.Integer
|
|
747
|
-
node.eval_type_name = "int"
|
|
748
|
-
}
|
|
749
|
-
case "char" {
|
|
750
|
-
node.value_type = RangerNodeType.Char
|
|
751
|
-
node.eval_type = RangerNodeType.Char
|
|
752
|
-
node.eval_type_name = "char"
|
|
753
|
-
}
|
|
754
|
-
case "charbuffer" {
|
|
755
|
-
node.value_type = RangerNodeType.CharBuffer
|
|
756
|
-
node.eval_type = RangerNodeType.CharBuffer
|
|
757
|
-
node.eval_type_name = "charbuffer"
|
|
758
|
-
}
|
|
759
|
-
case "string" {
|
|
760
|
-
node.value_type = RangerNodeType.String
|
|
761
|
-
node.eval_type = RangerNodeType.String
|
|
762
|
-
node.eval_type_name = "string"
|
|
763
|
-
}
|
|
764
|
-
case "boolean" {
|
|
765
|
-
node.value_type = RangerNodeType.Boolean
|
|
766
|
-
node.eval_type = RangerNodeType.Boolean
|
|
767
|
-
node.eval_type_name = "string"
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
default {
|
|
771
|
-
if (true == expression) {
|
|
772
|
-
node.value_type = RangerNodeType.ExpressionType
|
|
773
|
-
node.eval_type = RangerNodeType.ExpressionType
|
|
774
|
-
node.expression = true
|
|
775
|
-
}
|
|
776
|
-
if (value_type == RangerNodeType.Array) {
|
|
777
|
-
node.value_type = RangerNodeType.Array
|
|
778
|
-
node.eval_type = RangerNodeType.Array
|
|
779
|
-
node.eval_type_name = type_name
|
|
780
|
-
node.eval_array_type = array_type
|
|
781
|
-
}
|
|
782
|
-
if (value_type == RangerNodeType.Hash) {
|
|
783
|
-
node.value_type = RangerNodeType.Hash
|
|
784
|
-
node.eval_type = RangerNodeType.Hash
|
|
785
|
-
node.eval_type_name = type_name
|
|
786
|
-
node.eval_array_type = array_type
|
|
787
|
-
node.key_type = key_type
|
|
788
|
-
}
|
|
789
|
-
if (value_type == RangerNodeType.Enum) {
|
|
790
|
-
node.value_type = RangerNodeType.Enum
|
|
791
|
-
node.eval_type = RangerNodeType.Enum
|
|
792
|
-
node.eval_type_name = type_name
|
|
793
|
-
}
|
|
794
|
-
if (value_type == RangerNodeType.VRef) {
|
|
795
|
-
if (ctx.isEnumDefined(type_name)) {
|
|
796
|
-
node.value_type = RangerNodeType.Enum
|
|
797
|
-
node.eval_type = RangerNodeType.Enum
|
|
798
|
-
node.eval_type_name = type_name
|
|
799
|
-
}
|
|
800
|
-
if (ctx.isDefinedClass(type_name)) {
|
|
801
|
-
node.value_type = RangerNodeType.Object
|
|
802
|
-
node.eval_type = RangerNodeType.Object
|
|
803
|
-
node.eval_type_name = type_name
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
fn ifNoTypeSetToVoid:void () {
|
|
812
|
-
if( ( (strlen type_name) == 0 ) && ( (strlen key_type) == 0) && ( (strlen array_type) == 0) ) {
|
|
813
|
-
type_name = "void"
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
fn ifNoTypeSetToEvalTypeOf:boolean (node:CodeNode) {
|
|
817
|
-
if( ( (strlen type_name) == 0 ) && ( (strlen key_type) == 0) && ( (strlen array_type) == 0) ) {
|
|
818
|
-
type_name = node.eval_type_name
|
|
819
|
-
array_type = node.eval_array_type
|
|
820
|
-
key_type = node.eval_key_type
|
|
821
|
-
value_type = node.eval_type
|
|
822
|
-
eval_type = node.eval_type
|
|
823
|
-
eval_type_name = node.eval_type_name
|
|
824
|
-
eval_array_type = node.eval_array_type
|
|
825
|
-
eval_key_type = node.eval_key_type
|
|
826
|
-
|
|
827
|
-
if(node.value_type == RangerNodeType.ExpressionType) {
|
|
828
|
-
if( (null? expression_value)) {
|
|
829
|
-
def copyOf (node.rebuildWithType( (new RangerArgMatch () ) false))
|
|
830
|
-
removeLast copyOf.children
|
|
831
|
-
expression_value = copyOf
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
return true
|
|
835
|
-
}
|
|
836
|
-
return false
|
|
837
|
-
}
|
|
838
|
-
|
|
839
|
-
}
|