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