ranger-compiler 2.1.70 → 3.0.3
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 +103 -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
package/compiler/ng_parser2.clj
DELETED
|
@@ -1,735 +0,0 @@
|
|
|
1
|
-
Import "ng_RangerAppEnums.clj"
|
|
2
|
-
|
|
3
|
-
class SourceCode {
|
|
4
|
-
def code:string ""
|
|
5
|
-
def sp:int 0
|
|
6
|
-
def ep:int 0
|
|
7
|
-
def lines:[string]
|
|
8
|
-
def filename:string ""
|
|
9
|
-
|
|
10
|
-
Constructor (code_str:string ) {
|
|
11
|
-
code = code_str
|
|
12
|
-
lines = (strsplit code_str "\n")
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
fn getLineString:string (line_index:int) {
|
|
16
|
-
|
|
17
|
-
if (> (array_length lines) line_index) {
|
|
18
|
-
return (itemAt lines line_index)
|
|
19
|
-
}
|
|
20
|
-
return ""
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
fn getLine:int (sp:int) {
|
|
24
|
-
def cnt:int 0
|
|
25
|
-
for lines str:string i {
|
|
26
|
-
cnt = (+ cnt (+ (strlen str) 1)))
|
|
27
|
-
if (> cnt sp) {
|
|
28
|
-
return i
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return -1
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class CodeNode {
|
|
38
|
-
def code:SourceCode
|
|
39
|
-
def sp:int 0
|
|
40
|
-
def ep:int 0
|
|
41
|
-
def has_operator:boolean false
|
|
42
|
-
def op_index:int 0
|
|
43
|
-
def is_system_class:boolean false
|
|
44
|
-
def mutable_def:boolean false
|
|
45
|
-
def expression:boolean false
|
|
46
|
-
def vref:string ""
|
|
47
|
-
def is_block_node:boolean false
|
|
48
|
-
def infix_operator:boolean false
|
|
49
|
-
def infix_node:CodeNode
|
|
50
|
-
def infix_subnode:boolean false
|
|
51
|
-
def operator_pred:int 0
|
|
52
|
-
def to_the_right:boolean false
|
|
53
|
-
def right_node:CodeNode
|
|
54
|
-
def type_type:string ""
|
|
55
|
-
def type_name:string ""
|
|
56
|
-
def key_type:string ""
|
|
57
|
-
def array_type:string ""
|
|
58
|
-
def ns:[string]
|
|
59
|
-
def has_vref_annotation:boolean false
|
|
60
|
-
def vref_annotation:CodeNode
|
|
61
|
-
def has_type_annotation:boolean false
|
|
62
|
-
def type_annotation:CodeNode
|
|
63
|
-
def value_type:RangerNodeType RangerNodeType.NoType
|
|
64
|
-
def eval_type:RangerNodeType RangerNodeType.NoType
|
|
65
|
-
def eval_type_name:string ""
|
|
66
|
-
def eval_key_type:string ""
|
|
67
|
-
def eval_array_type:string ""
|
|
68
|
-
def flow_done:boolean false
|
|
69
|
-
def ref_change_done:boolean false
|
|
70
|
-
def eval_type_node:CodeNode
|
|
71
|
-
def ref_type:RangerNodeRefType RangerNodeRefType.NoType
|
|
72
|
-
def ref_need_assign:int 0
|
|
73
|
-
def double_value:double 0.0
|
|
74
|
-
def string_value:string ""
|
|
75
|
-
def int_value:int 0
|
|
76
|
-
def boolean_value:boolean false
|
|
77
|
-
def expression_value:CodeNode
|
|
78
|
-
def props:[string:CodeNode]
|
|
79
|
-
def prop_keys:[string]
|
|
80
|
-
def comments:[CodeNode]
|
|
81
|
-
def children:[CodeNode]
|
|
82
|
-
def parent@(weak):CodeNode
|
|
83
|
-
def didReturnAtIndex:int -1
|
|
84
|
-
def hasVarDef:boolean false
|
|
85
|
-
def hasClassDescription:boolean false
|
|
86
|
-
def hasNewOper:boolean false
|
|
87
|
-
def hasFnCall:boolean false
|
|
88
|
-
def hasParamDesc:boolean false
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
Constructor (source:SourceCode start:int end:int) {
|
|
92
|
-
sp = start
|
|
93
|
-
ep = end
|
|
94
|
-
code = source
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
fn getParsedString:string () {
|
|
98
|
-
return (substring code.code sp ep)
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
fn rebuildWithType:CodeNode (match:RangerArgMatch changeVref:boolean) {
|
|
102
|
-
def newNode@(lives):CodeNode (new CodeNode ( (unwrap code) sp ep))
|
|
103
|
-
newNode.has_operator = has_operator
|
|
104
|
-
newNode.op_index = op_index
|
|
105
|
-
newNode.mutable_def = mutable_def
|
|
106
|
-
newNode.expression = expression
|
|
107
|
-
if changeVref {
|
|
108
|
-
newNode.vref = (match.getTypeName(vref))
|
|
109
|
-
} {
|
|
110
|
-
newNode.vref = vref
|
|
111
|
-
}
|
|
112
|
-
newNode.is_block_node = is_block_node
|
|
113
|
-
newNode.type_type = (match.getTypeName(type_type))
|
|
114
|
-
newNode.type_name = (match.getTypeName(type_name))
|
|
115
|
-
newNode.key_type = (match.getTypeName(key_type))
|
|
116
|
-
newNode.array_type = (match.getTypeName(array_type))
|
|
117
|
-
newNode.value_type = value_type
|
|
118
|
-
if has_vref_annotation {
|
|
119
|
-
newNode.has_vref_annotation = true
|
|
120
|
-
def ann:CodeNode vref_annotation
|
|
121
|
-
newNode.vref_annotation = (ann.rebuildWithType(match true))
|
|
122
|
-
}
|
|
123
|
-
if has_type_annotation {
|
|
124
|
-
newNode.has_type_annotation = true
|
|
125
|
-
def t_ann:CodeNode type_annotation
|
|
126
|
-
newNode.type_annotation = (t_ann.rebuildWithType(match true))
|
|
127
|
-
}
|
|
128
|
-
for ns n:string i {
|
|
129
|
-
push newNode.ns n
|
|
130
|
-
}
|
|
131
|
-
switch value_type {
|
|
132
|
-
case RangerNodeType.Double {
|
|
133
|
-
newNode.double_value = double_value
|
|
134
|
-
}
|
|
135
|
-
case RangerNodeType.String {
|
|
136
|
-
newNode.string_value = string_value
|
|
137
|
-
}
|
|
138
|
-
case RangerNodeType.Integer {
|
|
139
|
-
newNode.int_value = int_value
|
|
140
|
-
}
|
|
141
|
-
case RangerNodeType.Boolean {
|
|
142
|
-
newNode.boolean_value = boolean_value
|
|
143
|
-
}
|
|
144
|
-
case RangerNodeType.ExpressionType {
|
|
145
|
-
if (!null? expression_value) {
|
|
146
|
-
newNode.expression_value = (expression_value.rebuildWithType(match changeVref))
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
for prop_keys key:string i {
|
|
151
|
-
push newNode.prop_keys key
|
|
152
|
-
def oldp:CodeNode (get props key)
|
|
153
|
-
def np:CodeNode (oldp.rebuildWithType(match changeVref))
|
|
154
|
-
set newNode.props key np
|
|
155
|
-
}
|
|
156
|
-
for children ch:CodeNode i {
|
|
157
|
-
def newCh:CodeNode (ch.rebuildWithType(match changeVref))
|
|
158
|
-
newCh.parent = newNode
|
|
159
|
-
push newNode.children newCh
|
|
160
|
-
}
|
|
161
|
-
return newNode
|
|
162
|
-
}
|
|
163
|
-
fn buildTypeSignatureUsingMatch:string (match:RangerArgMatch) {
|
|
164
|
-
def tName:string (match.getTypeName(type_name))
|
|
165
|
-
switch tName {
|
|
166
|
-
case "double" {
|
|
167
|
-
return "double"
|
|
168
|
-
}
|
|
169
|
-
case "string" {
|
|
170
|
-
return "string"
|
|
171
|
-
}
|
|
172
|
-
case "integer" {
|
|
173
|
-
return "int"
|
|
174
|
-
}
|
|
175
|
-
case "boolean" {
|
|
176
|
-
return "boolean"
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
def s:string ""
|
|
180
|
-
if (value_type == RangerNodeType.Array) {
|
|
181
|
-
s = (s + "[")
|
|
182
|
-
s = (s + (match.getTypeName(array_type)))
|
|
183
|
-
s = (s + (this.getTypeSignatureWithMatch(match)))
|
|
184
|
-
s = (s + "]")
|
|
185
|
-
return s
|
|
186
|
-
}
|
|
187
|
-
if (value_type == RangerNodeType.Hash) {
|
|
188
|
-
s = (s + "[")
|
|
189
|
-
s = (s + (match.getTypeName(key_type)))
|
|
190
|
-
s = (s + ":")
|
|
191
|
-
s = (s + (match.getTypeName(array_type)))
|
|
192
|
-
s = (s + (this.getTypeSignatureWithMatch(match)))
|
|
193
|
-
s = (s + "]")
|
|
194
|
-
return s
|
|
195
|
-
}
|
|
196
|
-
s = (match.getTypeName(type_name))
|
|
197
|
-
s = (s + (this.getVRefSignatureWithMatch(match)))
|
|
198
|
-
return s
|
|
199
|
-
}
|
|
200
|
-
fn buildTypeSignature:string () {
|
|
201
|
-
switch value_type {
|
|
202
|
-
case RangerNodeType.Double {
|
|
203
|
-
return "double"
|
|
204
|
-
}
|
|
205
|
-
case RangerNodeType.String {
|
|
206
|
-
return "string"
|
|
207
|
-
}
|
|
208
|
-
case RangerNodeType.Integer {
|
|
209
|
-
return "int"
|
|
210
|
-
}
|
|
211
|
-
case RangerNodeType.Boolean {
|
|
212
|
-
return "boolean"
|
|
213
|
-
}
|
|
214
|
-
case RangerNodeType.Char {
|
|
215
|
-
return "char"
|
|
216
|
-
}
|
|
217
|
-
case RangerNodeType.CharBuffer {
|
|
218
|
-
return "charbuffer"
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
def s:string ""
|
|
222
|
-
if (value_type == RangerNodeType.Array) {
|
|
223
|
-
s = (s + "[")
|
|
224
|
-
s = (s + array_type)
|
|
225
|
-
s = (s + (this.getTypeSignature()))
|
|
226
|
-
s = (s + "]")
|
|
227
|
-
return s
|
|
228
|
-
}
|
|
229
|
-
if (value_type == RangerNodeType.Hash) {
|
|
230
|
-
s = (s + "[")
|
|
231
|
-
s = (s + key_type)
|
|
232
|
-
s = (s + ":")
|
|
233
|
-
s = (s + array_type)
|
|
234
|
-
s = (s + (this.getTypeSignature()))
|
|
235
|
-
s = (s + "]")
|
|
236
|
-
return s
|
|
237
|
-
}
|
|
238
|
-
s = type_name
|
|
239
|
-
s = (s + (this.getVRefSignature()))
|
|
240
|
-
return s
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
fn getVRefSignatureWithMatch:string (match:RangerArgMatch) {
|
|
244
|
-
if has_vref_annotation {
|
|
245
|
-
def nn:CodeNode (vref_annotation.rebuildWithType(match true))
|
|
246
|
-
return ("@" + (nn.getCode()))
|
|
247
|
-
}
|
|
248
|
-
return ""
|
|
249
|
-
}
|
|
250
|
-
fn getVRefSignature:string () {
|
|
251
|
-
if has_vref_annotation {
|
|
252
|
-
return ("@" + (vref_annotation.getCode()))
|
|
253
|
-
}
|
|
254
|
-
return ""
|
|
255
|
-
}
|
|
256
|
-
fn getTypeSignatureWithMatch:string (match:RangerArgMatch) {
|
|
257
|
-
if has_type_annotation {
|
|
258
|
-
def nn:CodeNode (type_annotation.rebuildWithType(match true))
|
|
259
|
-
return ("@" + (nn.getCode()))
|
|
260
|
-
}
|
|
261
|
-
return ""
|
|
262
|
-
}
|
|
263
|
-
fn getTypeSignature:string () {
|
|
264
|
-
if has_type_annotation {
|
|
265
|
-
return ("@" + (type_annotation.getCode()))
|
|
266
|
-
}
|
|
267
|
-
return ""
|
|
268
|
-
}
|
|
269
|
-
fn getFilename:string () {
|
|
270
|
-
return code.filename
|
|
271
|
-
}
|
|
272
|
-
fn getFlag@(optional weak):CodeNode (flagName:string) {
|
|
273
|
-
|
|
274
|
-
def res:CodeNode
|
|
275
|
-
if (false == has_vref_annotation) {
|
|
276
|
-
return res
|
|
277
|
-
}
|
|
278
|
-
for vref_annotation.children ch:CodeNode i {
|
|
279
|
-
if (ch.vref == flagName) {
|
|
280
|
-
res = ch
|
|
281
|
-
return res
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
return res
|
|
285
|
-
}
|
|
286
|
-
fn hasFlag:boolean (flagName:string) {
|
|
287
|
-
if (false == has_vref_annotation) {
|
|
288
|
-
return false
|
|
289
|
-
}
|
|
290
|
-
for vref_annotation.children ch:CodeNode i {
|
|
291
|
-
if (ch.vref == flagName) {
|
|
292
|
-
return true
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
return false
|
|
296
|
-
}
|
|
297
|
-
fn setFlag:void (flagName:string) {
|
|
298
|
-
if (false == has_vref_annotation) {
|
|
299
|
-
vref_annotation = (new CodeNode ((unwrap code) sp ep))
|
|
300
|
-
}
|
|
301
|
-
if (this.hasFlag(flagName)) {
|
|
302
|
-
return
|
|
303
|
-
}
|
|
304
|
-
def flag:CodeNode (new CodeNode ((unwrap code) sp ep))
|
|
305
|
-
flag.vref = flagName
|
|
306
|
-
flag.value_type = RangerNodeType.VRef
|
|
307
|
-
push vref_annotation.children flag
|
|
308
|
-
has_vref_annotation = true
|
|
309
|
-
}
|
|
310
|
-
fn getTypeInformationString:string () {
|
|
311
|
-
def s:string ""
|
|
312
|
-
if ((strlen vref) > 0) {
|
|
313
|
-
s = (s + "<vref:" + vref + ">")
|
|
314
|
-
} {
|
|
315
|
-
s = (s + "<no.vref>")
|
|
316
|
-
}
|
|
317
|
-
if ((strlen type_name) > 0) {
|
|
318
|
-
s = (s + "<type_name:" + type_name + ">")
|
|
319
|
-
} {
|
|
320
|
-
s = (s + "<no.type_name>")
|
|
321
|
-
}
|
|
322
|
-
if ((strlen array_type) > 0) {
|
|
323
|
-
s = (s + "<array_type:" + array_type + ">")
|
|
324
|
-
} {
|
|
325
|
-
s = (s + "<no.array_type>")
|
|
326
|
-
}
|
|
327
|
-
if ((strlen key_type) > 0) {
|
|
328
|
-
s = (s + "<key_type:" + key_type + ">")
|
|
329
|
-
} {
|
|
330
|
-
s = (s + "<no.key_type>")
|
|
331
|
-
}
|
|
332
|
-
switch value_type {
|
|
333
|
-
case RangerNodeType.Boolean {
|
|
334
|
-
s = (s + "<value_type=Boolean>")
|
|
335
|
-
}
|
|
336
|
-
case RangerNodeType.String {
|
|
337
|
-
s = (s + "<value_type=String>")
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
return s
|
|
341
|
-
}
|
|
342
|
-
fn getLine:int () {
|
|
343
|
-
return (code.getLine(sp))
|
|
344
|
-
}
|
|
345
|
-
fn getLineString:string (line_index:int) {
|
|
346
|
-
return (code.getLineString(line_index))
|
|
347
|
-
}
|
|
348
|
-
fn getLineAsString:string () {
|
|
349
|
-
def idx:int (this.getLine())
|
|
350
|
-
def line_name_idx:int (idx + 1)
|
|
351
|
-
return ((this.getFilename()) + ", line " + line_name_idx + " : " + (code.getLineString(idx)))
|
|
352
|
-
}
|
|
353
|
-
fn getPositionalString:string () {
|
|
354
|
-
if ((ep > sp) && ((ep - sp) < 50)) {
|
|
355
|
-
def start:int sp
|
|
356
|
-
def end:int ep
|
|
357
|
-
start = (start - 100)
|
|
358
|
-
end = (end + 50)
|
|
359
|
-
if (start < 0) {
|
|
360
|
-
start = 0
|
|
361
|
-
}
|
|
362
|
-
if (end >= (strlen code.code)) {
|
|
363
|
-
end = ((strlen code.code) - 1)
|
|
364
|
-
}
|
|
365
|
-
return (substring code.code start end)
|
|
366
|
-
}
|
|
367
|
-
return ""
|
|
368
|
-
}
|
|
369
|
-
fn copyEvalResFrom:void (node:CodeNode) {
|
|
370
|
-
if node.hasParamDesc {
|
|
371
|
-
hasParamDesc = node.hasParamDesc
|
|
372
|
-
paramDesc = node.paramDesc
|
|
373
|
-
}
|
|
374
|
-
if (!null? node.typeClass) {
|
|
375
|
-
typeClass = node.typeClass
|
|
376
|
-
}
|
|
377
|
-
eval_type = node.eval_type
|
|
378
|
-
eval_type_name = node.eval_type_name
|
|
379
|
-
if (node.hasFlag("optional")) {
|
|
380
|
-
this.setFlag("optional")
|
|
381
|
-
}
|
|
382
|
-
if (node.value_type == RangerNodeType.Hash) {
|
|
383
|
-
eval_key_type = node.eval_key_type
|
|
384
|
-
eval_array_type = node.eval_array_type
|
|
385
|
-
eval_type = RangerNodeType.Hash
|
|
386
|
-
}
|
|
387
|
-
if (node.value_type == RangerNodeType.Array) {
|
|
388
|
-
eval_key_type = node.eval_key_type
|
|
389
|
-
eval_array_type = node.eval_array_type
|
|
390
|
-
eval_type = RangerNodeType.Array
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
fn defineNodeTypeTo:void (node:CodeNode ctx:RangerAppWriterContext) {
|
|
394
|
-
switch type_name {
|
|
395
|
-
case "double" {
|
|
396
|
-
node.value_type = RangerNodeType.Double
|
|
397
|
-
node.eval_type = RangerNodeType.Double
|
|
398
|
-
node.eval_type_name = "double"
|
|
399
|
-
}
|
|
400
|
-
case "int" {
|
|
401
|
-
node.value_type = RangerNodeType.Integer
|
|
402
|
-
node.eval_type = RangerNodeType.Integer
|
|
403
|
-
node.eval_type_name = "int"
|
|
404
|
-
}
|
|
405
|
-
case "char" {
|
|
406
|
-
node.value_type = RangerNodeType.Char
|
|
407
|
-
node.eval_type = RangerNodeType.Char
|
|
408
|
-
node.eval_type_name = "char"
|
|
409
|
-
}
|
|
410
|
-
case "charbuffer" {
|
|
411
|
-
node.value_type = RangerNodeType.CharBuffer
|
|
412
|
-
node.eval_type = RangerNodeType.CharBuffer
|
|
413
|
-
node.eval_type_name = "charbuffer"
|
|
414
|
-
}
|
|
415
|
-
case "string" {
|
|
416
|
-
node.value_type = RangerNodeType.String
|
|
417
|
-
node.eval_type = RangerNodeType.String
|
|
418
|
-
node.eval_type_name = "string"
|
|
419
|
-
}
|
|
420
|
-
case "boolean" {
|
|
421
|
-
node.value_type = RangerNodeType.Boolean
|
|
422
|
-
node.eval_type = RangerNodeType.Boolean
|
|
423
|
-
node.eval_type_name = "string"
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
default {
|
|
427
|
-
if (true == expression) {
|
|
428
|
-
node.value_type = RangerNodeType.ExpressionType
|
|
429
|
-
node.eval_type = RangerNodeType.ExpressionType
|
|
430
|
-
node.expression = true
|
|
431
|
-
}
|
|
432
|
-
if (value_type == RangerNodeType.Array) {
|
|
433
|
-
node.value_type = RangerNodeType.Array
|
|
434
|
-
node.eval_type = RangerNodeType.Array
|
|
435
|
-
node.eval_type_name = type_name
|
|
436
|
-
node.eval_array_type = array_type
|
|
437
|
-
}
|
|
438
|
-
if (value_type == RangerNodeType.Hash) {
|
|
439
|
-
node.value_type = RangerNodeType.Hash
|
|
440
|
-
node.eval_type = RangerNodeType.Hash
|
|
441
|
-
node.eval_type_name = type_name
|
|
442
|
-
node.eval_array_type = array_type
|
|
443
|
-
node.key_type = key_type
|
|
444
|
-
}
|
|
445
|
-
if (value_type == RangerNodeType.Enum) {
|
|
446
|
-
node.value_type = RangerNodeType.Enum
|
|
447
|
-
node.eval_type = RangerNodeType.Enum
|
|
448
|
-
node.eval_type_name = type_name
|
|
449
|
-
}
|
|
450
|
-
if (value_type == RangerNodeType.VRef) {
|
|
451
|
-
if (ctx.isEnumDefined(type_name)) {
|
|
452
|
-
node.value_type = RangerNodeType.Enum
|
|
453
|
-
node.eval_type = RangerNodeType.Enum
|
|
454
|
-
node.eval_type_name = type_name
|
|
455
|
-
}
|
|
456
|
-
if (ctx.isDefinedClass(type_name)) {
|
|
457
|
-
node.value_type = RangerNodeType.Object
|
|
458
|
-
node.eval_type = RangerNodeType.Object
|
|
459
|
-
node.eval_type_name = type_name
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
fn typeNameAsType:RangerNodeType (ctx:RangerAppWriterContext) {
|
|
466
|
-
switch type_name {
|
|
467
|
-
case "double" {
|
|
468
|
-
return RangerNodeType.Double
|
|
469
|
-
}
|
|
470
|
-
case "int" {
|
|
471
|
-
return RangerNodeType.Integer
|
|
472
|
-
}
|
|
473
|
-
case "string" {
|
|
474
|
-
return RangerNodeType.String
|
|
475
|
-
}
|
|
476
|
-
case "boolean" {
|
|
477
|
-
return RangerNodeType.Boolean
|
|
478
|
-
}
|
|
479
|
-
case "char" {
|
|
480
|
-
return RangerNodeType.Char
|
|
481
|
-
}
|
|
482
|
-
case "charbuffer" {
|
|
483
|
-
return RangerNodeType.CharBuffer
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
default {
|
|
487
|
-
if (== true expression) {
|
|
488
|
-
(return RangerNodeType.ExpressionType)
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
if (== value_type RangerNodeType.VRef) {
|
|
492
|
-
if(ctx.isEnumDefined(type_name)) {
|
|
493
|
-
return RangerNodeType.Enum
|
|
494
|
-
}
|
|
495
|
-
if(ctx.isDefinedClass(type_name)) {
|
|
496
|
-
return RangerNodeType.Object
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
return value_type
|
|
502
|
-
}
|
|
503
|
-
fn isPrimitive:boolean () {
|
|
504
|
-
if ((value_type == RangerNodeType.Double) || (value_type == RangerNodeType.String) || (value_type == RangerNodeType.Integer) || (value_type == RangerNodeType.Char) || (value_type == RangerNodeType.CharBuffer) || (value_type == RangerNodeType.Boolean)) {
|
|
505
|
-
return true
|
|
506
|
-
}
|
|
507
|
-
return false
|
|
508
|
-
}
|
|
509
|
-
fn isPrimitiveType:boolean () {
|
|
510
|
-
def tn:string type_name
|
|
511
|
-
if ((tn == "double") || (tn == "string") || (tn == "int") || (tn == "char") || (tn == "charbuffer") || (tn == "boolean")) {
|
|
512
|
-
return true
|
|
513
|
-
}
|
|
514
|
-
return false
|
|
515
|
-
}
|
|
516
|
-
fn isAPrimitiveType:boolean () {
|
|
517
|
-
def tn:string type_name
|
|
518
|
-
if ((value_type == RangerNodeType.Array) || (value_type == RangerNodeType.Hash)) {
|
|
519
|
-
tn = array_type
|
|
520
|
-
}
|
|
521
|
-
if ((tn == "double") || (tn == "string") || (tn == "int") || (tn == "char") || (tn == "charbuffer") || (tn == "boolean")) {
|
|
522
|
-
return true
|
|
523
|
-
}
|
|
524
|
-
return false
|
|
525
|
-
}
|
|
526
|
-
fn getFirst:CodeNode () {
|
|
527
|
-
return (itemAt children 0)
|
|
528
|
-
}
|
|
529
|
-
fn getSecond:CodeNode () {
|
|
530
|
-
return (itemAt children 1)
|
|
531
|
-
}
|
|
532
|
-
fn getThird:CodeNode () {
|
|
533
|
-
return (itemAt children 2)
|
|
534
|
-
}
|
|
535
|
-
fn isSecondExpr:boolean () {
|
|
536
|
-
if ((array_length children) > 1) {
|
|
537
|
-
def second:CodeNode (itemAt children 1)
|
|
538
|
-
if second.expression {
|
|
539
|
-
return true
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
return false
|
|
543
|
-
}
|
|
544
|
-
fn getOperator:string () {
|
|
545
|
-
def s:string ""
|
|
546
|
-
if ((array_length children) > 0) {
|
|
547
|
-
def fc:CodeNode (itemAt children 0)
|
|
548
|
-
if (fc.value_type == RangerNodeType.VRef) {
|
|
549
|
-
return fc.vref
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
return s
|
|
553
|
-
}
|
|
554
|
-
fn getVRefAt:string (idx:int) {
|
|
555
|
-
def s:string ""
|
|
556
|
-
if ((array_length children) > idx) {
|
|
557
|
-
def fc:CodeNode (itemAt children idx)
|
|
558
|
-
return fc.vref
|
|
559
|
-
}
|
|
560
|
-
return s
|
|
561
|
-
}
|
|
562
|
-
fn getStringAt:string (idx:int) {
|
|
563
|
-
def s:string ""
|
|
564
|
-
if ((array_length children) > idx) {
|
|
565
|
-
def fc:CodeNode (itemAt children idx)
|
|
566
|
-
if (fc.value_type == RangerNodeType.String) {
|
|
567
|
-
return fc.string_value
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
return s
|
|
571
|
-
}
|
|
572
|
-
fn hasExpressionProperty:boolean (name:string) {
|
|
573
|
-
def ann:CodeNode (get props name)
|
|
574
|
-
if (!null? ann) {
|
|
575
|
-
return ann.expression
|
|
576
|
-
}
|
|
577
|
-
return false
|
|
578
|
-
}
|
|
579
|
-
fn getExpressionProperty@(weak optional):CodeNode (name:string) {
|
|
580
|
-
def ann:CodeNode (get props name)
|
|
581
|
-
if (!null? ann) {
|
|
582
|
-
return ann
|
|
583
|
-
}
|
|
584
|
-
return ann
|
|
585
|
-
}
|
|
586
|
-
fn hasIntProperty:boolean (name:string) {
|
|
587
|
-
def ann:CodeNode (get props name)
|
|
588
|
-
if (!null? ann) {
|
|
589
|
-
def fc:CodeNode (itemAt ann.children 0)
|
|
590
|
-
if (fc.value_type == RangerNodeType.Integer) {
|
|
591
|
-
return true
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
return false
|
|
595
|
-
}
|
|
596
|
-
fn getIntProperty:int (name:string) {
|
|
597
|
-
def ann:CodeNode (get props name)
|
|
598
|
-
if (!null? ann) {
|
|
599
|
-
def fc:CodeNode (itemAt ann.children 0)
|
|
600
|
-
if (fc.value_type == RangerNodeType.Integer) {
|
|
601
|
-
return fc.int_value
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
return 0
|
|
605
|
-
}
|
|
606
|
-
fn hasDoubleProperty:boolean (name:string) {
|
|
607
|
-
def ann:CodeNode (get props name)
|
|
608
|
-
if (!null? ann) {
|
|
609
|
-
if (ann.value_type == RangerNodeType.Double) {
|
|
610
|
-
return true
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
return false
|
|
614
|
-
}
|
|
615
|
-
fn getDoubleProperty:double (name:string) {
|
|
616
|
-
def ann:CodeNode (get props name)
|
|
617
|
-
if (!null? ann) {
|
|
618
|
-
if (ann.value_type == RangerNodeType.Double) {
|
|
619
|
-
return ann.double_value
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
return 0.0
|
|
623
|
-
}
|
|
624
|
-
fn hasStringProperty:boolean (name:string) {
|
|
625
|
-
if( false == (has props name) ) {
|
|
626
|
-
return false
|
|
627
|
-
}
|
|
628
|
-
def ann:CodeNode (get props name)
|
|
629
|
-
if (!null? ann) {
|
|
630
|
-
if (ann.value_type == RangerNodeType.String) {
|
|
631
|
-
return true
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
return false
|
|
635
|
-
}
|
|
636
|
-
fn getStringProperty:string (name:string) {
|
|
637
|
-
def ann:CodeNode (get props name)
|
|
638
|
-
if (!null? ann) {
|
|
639
|
-
if (ann.value_type == RangerNodeType.String) {
|
|
640
|
-
return ann.string_value
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
return ""
|
|
644
|
-
}
|
|
645
|
-
fn hasBooleanProperty:boolean (name:string) {
|
|
646
|
-
def ann:CodeNode (get props name)
|
|
647
|
-
if (!null? ann) {
|
|
648
|
-
if (ann.value_type == RangerNodeType.Boolean) {
|
|
649
|
-
return true
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
return false
|
|
653
|
-
}
|
|
654
|
-
fn getBooleanProperty:boolean (name:string) {
|
|
655
|
-
def ann:CodeNode (get props name)
|
|
656
|
-
if (!null? ann) {
|
|
657
|
-
if (ann.value_type == RangerNodeType.Boolean) {
|
|
658
|
-
return ann.boolean_value
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
return false
|
|
662
|
-
}
|
|
663
|
-
fn isFirstTypeVref:boolean (vrefName:string) {
|
|
664
|
-
if ((array_length children) > 0) {
|
|
665
|
-
def fc:CodeNode (itemAt children 0)
|
|
666
|
-
if (fc.value_type == RangerNodeType.VRef) {
|
|
667
|
-
return true
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
return false
|
|
671
|
-
}
|
|
672
|
-
fn isFirstVref:boolean (vrefName:string) {
|
|
673
|
-
if ((array_length children) > 0) {
|
|
674
|
-
def fc:CodeNode (itemAt children 0)
|
|
675
|
-
if (fc.vref == vrefName) {
|
|
676
|
-
return true
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
return false
|
|
680
|
-
}
|
|
681
|
-
fn getString:string () {
|
|
682
|
-
return (substring code.code sp ep)
|
|
683
|
-
}
|
|
684
|
-
fn writeCode:void (wr:CodeWriter) {
|
|
685
|
-
switch value_type {
|
|
686
|
-
case RangerNodeType.Double {
|
|
687
|
-
wr.out((double2str double_value) false)
|
|
688
|
-
}
|
|
689
|
-
case RangerNodeType.String {
|
|
690
|
-
wr.out(((strfromcode 34) + string_value + (strfromcode 34)) false)
|
|
691
|
-
}
|
|
692
|
-
case RangerNodeType.Integer {
|
|
693
|
-
wr.out( "" + int_value , false)
|
|
694
|
-
}
|
|
695
|
-
case RangerNodeType.Boolean {
|
|
696
|
-
if(boolean_value) {
|
|
697
|
-
wr.out("true" false)
|
|
698
|
-
} {
|
|
699
|
-
wr.out("false" false)
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
}
|
|
704
|
-
fn getCode:string () {
|
|
705
|
-
def wr:CodeWriter (new CodeWriter ())
|
|
706
|
-
this.writeCode(wr)
|
|
707
|
-
return (wr.getCode())
|
|
708
|
-
}
|
|
709
|
-
fn walk:void () {
|
|
710
|
-
switch value_type {
|
|
711
|
-
case RangerNodeType.Double {
|
|
712
|
-
print ("Double : " + double_value)
|
|
713
|
-
}
|
|
714
|
-
case RangerNodeType.String {
|
|
715
|
-
print ("String : " + string_value)
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
if expression {
|
|
719
|
-
print "("
|
|
720
|
-
} {
|
|
721
|
-
print (substring code.code sp ep)
|
|
722
|
-
}
|
|
723
|
-
for children item:CodeNode i {
|
|
724
|
-
item.walk()
|
|
725
|
-
}
|
|
726
|
-
if expression {
|
|
727
|
-
print ")"
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
}
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
class AfterCodeNode {
|
|
734
|
-
def ff:int 0
|
|
735
|
-
}
|