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
|
@@ -1,873 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
class SourceCode {
|
|
4
|
-
def code:string ""
|
|
5
|
-
def sp:int 0
|
|
6
|
-
def ep:int 0
|
|
7
|
-
|
|
8
|
-
Constructor ( code_str:string ) {
|
|
9
|
-
code = code_str
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
class RangerLispParser {
|
|
14
|
-
def code@(optional):SourceCode
|
|
15
|
-
def buff@(optional):charbuffer
|
|
16
|
-
def len:int 0
|
|
17
|
-
def i:int 0
|
|
18
|
-
def parents@(weak):[CodeNode]
|
|
19
|
-
def next@(optional):CodeNode
|
|
20
|
-
def paren_cnt:int 0
|
|
21
|
-
def get_op_pred:int 0
|
|
22
|
-
def rootNode@(optional):CodeNode
|
|
23
|
-
def curr_node@(optional weak):CodeNode
|
|
24
|
-
def had_error:boolean false
|
|
25
|
-
|
|
26
|
-
Constructor ( code_module:SourceCode ) {
|
|
27
|
-
buff = (to_charbuffer code_module.code)
|
|
28
|
-
code = code_module
|
|
29
|
-
len = (length (( unwrap buff)))
|
|
30
|
-
rootNode = (new CodeNode(( unwrap code), 0, 0))
|
|
31
|
-
rootNode.is_block_node = true
|
|
32
|
-
rootNode.expression = true
|
|
33
|
-
curr_node = rootNode
|
|
34
|
-
push parents ( unwrap curr_node)
|
|
35
|
-
paren_cnt = 1
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
fn getCode:string () {
|
|
39
|
-
return (rootNode.getCode())
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
fn parse_raw_annotation:CodeNode () {
|
|
43
|
-
def sp:int i
|
|
44
|
-
def ep:int i
|
|
45
|
-
i = i + 1
|
|
46
|
-
sp = i
|
|
47
|
-
ep = i
|
|
48
|
-
if i < len {
|
|
49
|
-
def a_node2:CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
50
|
-
a_node2.expression = true
|
|
51
|
-
curr_node = a_node2
|
|
52
|
-
push parents a_node2
|
|
53
|
-
i = i + 1
|
|
54
|
-
paren_cnt = paren_cnt + 1
|
|
55
|
-
this.parse()
|
|
56
|
-
return a_node2
|
|
57
|
-
} {
|
|
58
|
-
}
|
|
59
|
-
return (new CodeNode(( unwrap code), sp, ep))
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
fn skip_space:boolean ( is_block_parent@(lives):boolean) {
|
|
63
|
-
def s:charbuffer ( unwrap buff)
|
|
64
|
-
def did_break:boolean false
|
|
65
|
-
if i >= len {
|
|
66
|
-
return true
|
|
67
|
-
}
|
|
68
|
-
def c:char (charAt s i)
|
|
69
|
-
def bb:boolean c == ((charcode ".")
|
|
70
|
-
while ((i < len) && (c <= 32)) {
|
|
71
|
-
if is_block_parent && ((c == 10) || (c == 13)) {
|
|
72
|
-
this.end_expression()
|
|
73
|
-
did_break = true
|
|
74
|
-
break
|
|
75
|
-
}
|
|
76
|
-
i = 1 + i
|
|
77
|
-
if i >= len {
|
|
78
|
-
return true
|
|
79
|
-
}
|
|
80
|
-
c = (charAt s i)
|
|
81
|
-
}
|
|
82
|
-
return did_break
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
fn end_expression:boolean () {
|
|
86
|
-
i = 1 + i
|
|
87
|
-
if i >= len {
|
|
88
|
-
return false
|
|
89
|
-
}
|
|
90
|
-
paren_cnt = paren_cnt - 1
|
|
91
|
-
if paren_cnt < 0 {
|
|
92
|
-
print "Parser error ) mismatch"
|
|
93
|
-
}
|
|
94
|
-
removeLast parents
|
|
95
|
-
if (!null? curr_node) {
|
|
96
|
-
curr_node.ep = i
|
|
97
|
-
curr_node.infix_operator = false
|
|
98
|
-
}
|
|
99
|
-
if ((array_length parents)) > 0 {
|
|
100
|
-
curr_node = (itemAt parents (((array_length parents)) - 1))
|
|
101
|
-
} {
|
|
102
|
-
curr_node = rootNode
|
|
103
|
-
}
|
|
104
|
-
curr_node.infix_operator = false
|
|
105
|
-
return true
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
fn getOperator:int () {
|
|
109
|
-
def s:charbuffer ( unwrap buff)
|
|
110
|
-
if (i + 2) >= len {
|
|
111
|
-
return 0
|
|
112
|
-
}
|
|
113
|
-
def c:char (charAt s i)
|
|
114
|
-
def c2:char (charAt s (i + 1))
|
|
115
|
-
switch (c ) {
|
|
116
|
-
case (charcode "*" {
|
|
117
|
-
i = i + 1
|
|
118
|
-
return 14
|
|
119
|
-
}
|
|
120
|
-
case (charcode "/" {
|
|
121
|
-
i = i + 1
|
|
122
|
-
return 14
|
|
123
|
-
}
|
|
124
|
-
case (charcode "+" {
|
|
125
|
-
i = i + 1
|
|
126
|
-
return 13
|
|
127
|
-
}
|
|
128
|
-
case (charcode "-" {
|
|
129
|
-
i = i + 1
|
|
130
|
-
return 13
|
|
131
|
-
}
|
|
132
|
-
case (charcode "<" {
|
|
133
|
-
if c2 == ((charcode "=") {
|
|
134
|
-
i = i + 2
|
|
135
|
-
return 11
|
|
136
|
-
}
|
|
137
|
-
i = i + 1
|
|
138
|
-
return 11
|
|
139
|
-
}
|
|
140
|
-
case (charcode ">" {
|
|
141
|
-
if c2 == ((charcode "=") {
|
|
142
|
-
i = i + 2
|
|
143
|
-
return 11
|
|
144
|
-
}
|
|
145
|
-
i = i + 1
|
|
146
|
-
return 11
|
|
147
|
-
}
|
|
148
|
-
case (charcode "!" {
|
|
149
|
-
if c2 == ((charcode "=") {
|
|
150
|
-
i = i + 2
|
|
151
|
-
return 10
|
|
152
|
-
}
|
|
153
|
-
return 0
|
|
154
|
-
}
|
|
155
|
-
case (charcode "=" {
|
|
156
|
-
if c2 == ((charcode "=") {
|
|
157
|
-
i = i + 2
|
|
158
|
-
return 10
|
|
159
|
-
}
|
|
160
|
-
i = i + 1
|
|
161
|
-
return 3
|
|
162
|
-
}
|
|
163
|
-
case (charcode "&" {
|
|
164
|
-
if c2 == ((charcode "&") {
|
|
165
|
-
i = i + 2
|
|
166
|
-
return 6
|
|
167
|
-
}
|
|
168
|
-
return 0
|
|
169
|
-
}
|
|
170
|
-
case (charcode "|" {
|
|
171
|
-
if c2 == ((charcode "|") {
|
|
172
|
-
i = i + 2
|
|
173
|
-
return 5
|
|
174
|
-
}
|
|
175
|
-
return 0
|
|
176
|
-
}
|
|
177
|
-
default {
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return 0
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
fn isOperator:int () {
|
|
184
|
-
def s:charbuffer ( unwrap buff)
|
|
185
|
-
if (i - 2) > len {
|
|
186
|
-
return 0
|
|
187
|
-
}
|
|
188
|
-
def c:char (charAt s i)
|
|
189
|
-
def c2:char (charAt s (i + 1))
|
|
190
|
-
switch (c ) {
|
|
191
|
-
case (charcode "*" {
|
|
192
|
-
return 1
|
|
193
|
-
}
|
|
194
|
-
case (charcode "/" {
|
|
195
|
-
return 14
|
|
196
|
-
}
|
|
197
|
-
case (charcode "+" {
|
|
198
|
-
return 13
|
|
199
|
-
}
|
|
200
|
-
case (charcode "-" {
|
|
201
|
-
return 13
|
|
202
|
-
}
|
|
203
|
-
case (charcode "<" {
|
|
204
|
-
if c2 == ((charcode "=") {
|
|
205
|
-
return 11
|
|
206
|
-
}
|
|
207
|
-
return 11
|
|
208
|
-
}
|
|
209
|
-
case (charcode ">" {
|
|
210
|
-
if c2 == ((charcode "=") {
|
|
211
|
-
return 11
|
|
212
|
-
}
|
|
213
|
-
return 11
|
|
214
|
-
}
|
|
215
|
-
case (charcode "!" {
|
|
216
|
-
if c2 == ((charcode "=") {
|
|
217
|
-
return 10
|
|
218
|
-
}
|
|
219
|
-
return 0
|
|
220
|
-
}
|
|
221
|
-
case (charcode "=" {
|
|
222
|
-
if c2 == ((charcode "=") {
|
|
223
|
-
return 10
|
|
224
|
-
}
|
|
225
|
-
return 3
|
|
226
|
-
}
|
|
227
|
-
case (charcode "&" {
|
|
228
|
-
if c2 == ((charcode "&") {
|
|
229
|
-
return 6
|
|
230
|
-
}
|
|
231
|
-
return 0
|
|
232
|
-
}
|
|
233
|
-
case (charcode "|" {
|
|
234
|
-
if c2 == ((charcode "|") {
|
|
235
|
-
return 5
|
|
236
|
-
}
|
|
237
|
-
return 0
|
|
238
|
-
}
|
|
239
|
-
default {
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
return 0
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
fn getOperatorPred:int ( str@(lives):string) {
|
|
246
|
-
switch (str ) {
|
|
247
|
-
case "<" {
|
|
248
|
-
return 11
|
|
249
|
-
}
|
|
250
|
-
case ">" {
|
|
251
|
-
return 11
|
|
252
|
-
}
|
|
253
|
-
case "<=" {
|
|
254
|
-
return 11
|
|
255
|
-
}
|
|
256
|
-
case ">=" {
|
|
257
|
-
return 11
|
|
258
|
-
}
|
|
259
|
-
case "==" {
|
|
260
|
-
return 10
|
|
261
|
-
}
|
|
262
|
-
case "!=" {
|
|
263
|
-
return 10
|
|
264
|
-
}
|
|
265
|
-
case "=" {
|
|
266
|
-
return 3
|
|
267
|
-
}
|
|
268
|
-
case "&&" {
|
|
269
|
-
return 6
|
|
270
|
-
}
|
|
271
|
-
case "||" {
|
|
272
|
-
return 5
|
|
273
|
-
}
|
|
274
|
-
case "+" {
|
|
275
|
-
return 13
|
|
276
|
-
}
|
|
277
|
-
case "-" {
|
|
278
|
-
return 13
|
|
279
|
-
}
|
|
280
|
-
case "*" {
|
|
281
|
-
return 14
|
|
282
|
-
}
|
|
283
|
-
case "/" {
|
|
284
|
-
return 14
|
|
285
|
-
}
|
|
286
|
-
default {
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
return 0
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
fn insert_node:void ( p_node@(strong lives):CodeNode) {
|
|
293
|
-
def push_target@(optional weak lives):CodeNode curr_node
|
|
294
|
-
if curr_node.infix_operator {
|
|
295
|
-
push_target = curr_node.infix_node
|
|
296
|
-
if push_target.to_the_right {
|
|
297
|
-
push_target = push_target.right_node
|
|
298
|
-
p_node.parent = push_target
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
push push_target.children p_node
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
fn parse:void () {
|
|
305
|
-
def s:charbuffer ( unwrap buff)
|
|
306
|
-
def c:char (charAt s 0)
|
|
307
|
-
def next_c:char 0
|
|
308
|
-
def fc:char 0
|
|
309
|
-
def new_node@(optional):CodeNode
|
|
310
|
-
def sp:int 0
|
|
311
|
-
def ep:int 0
|
|
312
|
-
def last_i:int 0
|
|
313
|
-
def had_lf:boolean false
|
|
314
|
-
while (i < len) {
|
|
315
|
-
if had_error {
|
|
316
|
-
break
|
|
317
|
-
}
|
|
318
|
-
last_i = i
|
|
319
|
-
def is_block_parent:boolean false
|
|
320
|
-
if had_lf {
|
|
321
|
-
had_lf = false
|
|
322
|
-
this.end_expression()
|
|
323
|
-
break
|
|
324
|
-
}
|
|
325
|
-
if (!null? curr_node) {
|
|
326
|
-
if (!null? curr_node.parent) {
|
|
327
|
-
def nodeParent@(optional):CodeNode curr_node.parent
|
|
328
|
-
if nodeParent.is_block_node {
|
|
329
|
-
is_block_parent = true
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
if (this.skip_space(is_block_parent)) {
|
|
334
|
-
break
|
|
335
|
-
}
|
|
336
|
-
had_lf = false
|
|
337
|
-
c = (charAt s i)
|
|
338
|
-
if i < len {
|
|
339
|
-
c = (charAt s i)
|
|
340
|
-
if c == 59 {
|
|
341
|
-
sp = i + 1
|
|
342
|
-
while ((i < len) && (((charAt s i)) > 31)) {
|
|
343
|
-
i = 1 + i
|
|
344
|
-
}
|
|
345
|
-
if i >= len {
|
|
346
|
-
break
|
|
347
|
-
}
|
|
348
|
-
new_node = (new CodeNode(( unwrap code), sp, i))
|
|
349
|
-
new_node.value_type = RangerNodeType.Comment
|
|
350
|
-
new_node.string_value = (substring s sp i)
|
|
351
|
-
push curr_node.comments ( unwrap new_node)
|
|
352
|
-
continue
|
|
353
|
-
}
|
|
354
|
-
if i < (len - 1) {
|
|
355
|
-
fc = (charAt s (i + 1))
|
|
356
|
-
if (c == 40) || (c == ((charcode "{")) || ((c == 39) && (fc == 40)) || ((c == 96) && (fc == 40)) {
|
|
357
|
-
paren_cnt = paren_cnt + 1
|
|
358
|
-
if (null? curr_node) {
|
|
359
|
-
rootNode = (new CodeNode(( unwrap code), i, i))
|
|
360
|
-
curr_node = rootNode
|
|
361
|
-
if c == 96 {
|
|
362
|
-
curr_node.value_type = RangerNodeType.Quasiliteral
|
|
363
|
-
}
|
|
364
|
-
if c == 39 {
|
|
365
|
-
curr_node.value_type = RangerNodeType.Literal
|
|
366
|
-
}
|
|
367
|
-
curr_node.expression = true
|
|
368
|
-
push parents ( unwrap curr_node)
|
|
369
|
-
} {
|
|
370
|
-
def new_qnode@(lives):CodeNode (new CodeNode(( unwrap code), i, i))
|
|
371
|
-
if c == 96 {
|
|
372
|
-
new_qnode.value_type = RangerNodeType.Quasiliteral
|
|
373
|
-
}
|
|
374
|
-
if c == 39 {
|
|
375
|
-
new_qnode.value_type = RangerNodeType.Literal
|
|
376
|
-
}
|
|
377
|
-
new_qnode.expression = true
|
|
378
|
-
this.insert_node(new_qnode)
|
|
379
|
-
push parents new_qnode
|
|
380
|
-
curr_node = new_qnode
|
|
381
|
-
}
|
|
382
|
-
if c == ((charcode "{") {
|
|
383
|
-
curr_node.is_block_node = true
|
|
384
|
-
}
|
|
385
|
-
i = 1 + i
|
|
386
|
-
this.parse()
|
|
387
|
-
continue
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
sp = i
|
|
391
|
-
ep = i
|
|
392
|
-
fc = (charAt s i)
|
|
393
|
-
if ((fc == 45) && (((charAt s (i + 1))) >= 46) && (((charAt s (i + 1))) <= 57)) || ((fc >= 48) && (fc <= 57)) {
|
|
394
|
-
def is_double:boolean false
|
|
395
|
-
sp = i
|
|
396
|
-
i = 1 + i
|
|
397
|
-
c = (charAt s i)
|
|
398
|
-
while ((i < len) && (((c >= 48) && (c <= 57)) || (c == ((charcode ".")) || ((i == sp) && ((c == ((charcode "+")) || (c == ((charcode "-")))))) {
|
|
399
|
-
if c == ((charcode ".") {
|
|
400
|
-
is_double = true
|
|
401
|
-
}
|
|
402
|
-
i = 1 + i
|
|
403
|
-
c = (charAt s i)
|
|
404
|
-
}
|
|
405
|
-
ep = i
|
|
406
|
-
def new_num_node:CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
407
|
-
if is_double {
|
|
408
|
-
new_num_node.value_type = RangerNodeType.Double
|
|
409
|
-
new_num_node.double_value = ( unwrap ((str2double ((substring s sp ep))))
|
|
410
|
-
} {
|
|
411
|
-
new_num_node.value_type = RangerNodeType.Integer
|
|
412
|
-
new_num_node.int_value = ( unwrap ((str2int ((substring s sp ep))))
|
|
413
|
-
}
|
|
414
|
-
this.insert_node(new_num_node)
|
|
415
|
-
continue
|
|
416
|
-
}
|
|
417
|
-
if fc == 34 {
|
|
418
|
-
sp = i + 1
|
|
419
|
-
ep = sp
|
|
420
|
-
c = (charAt s i)
|
|
421
|
-
def must_encode:boolean false
|
|
422
|
-
while (i < len) {
|
|
423
|
-
i = 1 + i
|
|
424
|
-
c = (charAt s i)
|
|
425
|
-
if c == 34 {
|
|
426
|
-
break
|
|
427
|
-
}
|
|
428
|
-
if c == 92 {
|
|
429
|
-
i = 1 + i
|
|
430
|
-
if i < len {
|
|
431
|
-
must_encode = true
|
|
432
|
-
c = (charAt s i)
|
|
433
|
-
} {
|
|
434
|
-
break
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
ep = i
|
|
439
|
-
if i < len {
|
|
440
|
-
def encoded_str:string ""
|
|
441
|
-
if must_encode {
|
|
442
|
-
def orig_str:charbuffer (to_charbuffer ((substring s sp ep)))
|
|
443
|
-
def str_length:int (length orig_str)
|
|
444
|
-
def ii:int 0
|
|
445
|
-
while (ii < str_length) {def cc:char (charAt orig_str ii)
|
|
446
|
-
if cc == 92 {
|
|
447
|
-
def next_ch:char (charAt orig_str (ii + 1))
|
|
448
|
-
switch (next_ch ) {
|
|
449
|
-
case 34 {
|
|
450
|
-
encoded_str = encoded_str + ((strfromcode 34)
|
|
451
|
-
}
|
|
452
|
-
case 92 {
|
|
453
|
-
encoded_str = encoded_str + ((strfromcode 92)
|
|
454
|
-
}
|
|
455
|
-
case 47 {
|
|
456
|
-
encoded_str = encoded_str + ((strfromcode 47)
|
|
457
|
-
}
|
|
458
|
-
case 98 {
|
|
459
|
-
encoded_str = encoded_str + ((strfromcode 8)
|
|
460
|
-
}
|
|
461
|
-
case 102 {
|
|
462
|
-
encoded_str = encoded_str + ((strfromcode 12)
|
|
463
|
-
}
|
|
464
|
-
case 110 {
|
|
465
|
-
encoded_str = encoded_str + ((strfromcode 10)
|
|
466
|
-
}
|
|
467
|
-
case 114 {
|
|
468
|
-
encoded_str = encoded_str + ((strfromcode 13)
|
|
469
|
-
}
|
|
470
|
-
case 116 {
|
|
471
|
-
encoded_str = encoded_str + ((strfromcode 9)
|
|
472
|
-
}
|
|
473
|
-
case 117 {
|
|
474
|
-
ii = ii + 4
|
|
475
|
-
}
|
|
476
|
-
default {
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
ii = ii + 2
|
|
480
|
-
} {
|
|
481
|
-
encoded_str = encoded_str + ((substring orig_str ii (1 + ii)))
|
|
482
|
-
ii = ii + 1
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
def new_str_node:CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
487
|
-
new_str_node.value_type = RangerNodeType.String
|
|
488
|
-
if must_encode {
|
|
489
|
-
new_str_node.string_value = encoded_str
|
|
490
|
-
} {
|
|
491
|
-
new_str_node.string_value = (substring s sp ep)
|
|
492
|
-
}
|
|
493
|
-
this.insert_node(new_str_node)
|
|
494
|
-
i = 1 + i
|
|
495
|
-
continue
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
if (fc == ((charcode "t")) && (((charAt s (i + 1))) == ((charcode "r")) && (((charAt s (i + 2))) == ((charcode "u")) && (((charAt s (i + 3))) == ((charcode "e")) {
|
|
499
|
-
def new_true_node:CodeNode (new CodeNode(( unwrap code), sp, sp + 4))
|
|
500
|
-
new_true_node.value_type = RangerNodeType.Boolean
|
|
501
|
-
new_true_node.boolean_value = true
|
|
502
|
-
this.insert_node(new_true_node)
|
|
503
|
-
i = i + 4
|
|
504
|
-
continue
|
|
505
|
-
}
|
|
506
|
-
if (fc == ((charcode "f")) && (((charAt s (i + 1))) == ((charcode "a")) && (((charAt s (i + 2))) == ((charcode "l")) && (((charAt s (i + 3))) == ((charcode "s")) && (((charAt s (i + 4))) == ((charcode "e")) {
|
|
507
|
-
def new_f_node:CodeNode (new CodeNode(( unwrap code), sp, sp + 5))
|
|
508
|
-
new_f_node.value_type = RangerNodeType.Boolean
|
|
509
|
-
new_f_node.boolean_value = false
|
|
510
|
-
this.insert_node(new_f_node)
|
|
511
|
-
i = i + 5
|
|
512
|
-
continue
|
|
513
|
-
}
|
|
514
|
-
if fc == ((charcode "@") {
|
|
515
|
-
i = i + 1
|
|
516
|
-
sp = i
|
|
517
|
-
ep = i
|
|
518
|
-
c = (charAt s i)
|
|
519
|
-
while ((i < len) && (((charAt s i)) > 32) && (c != 40) && (c != 41) && (c != ((charcode "}"))) {
|
|
520
|
-
i = 1 + i
|
|
521
|
-
c = (charAt s i)
|
|
522
|
-
}
|
|
523
|
-
ep = i
|
|
524
|
-
if (i < len) && (ep > sp) {
|
|
525
|
-
def a_node2@(lives):CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
526
|
-
def a_name:string (substring s sp ep)
|
|
527
|
-
a_node2.expression = true
|
|
528
|
-
curr_node = a_node2
|
|
529
|
-
push parents a_node2
|
|
530
|
-
i = i + 1
|
|
531
|
-
paren_cnt = paren_cnt + 1
|
|
532
|
-
this.parse()
|
|
533
|
-
def use_first:boolean false
|
|
534
|
-
if 1 == ((array_length a_node2.children)) {
|
|
535
|
-
def ch1:CodeNode (itemAt a_node2.children 0)
|
|
536
|
-
use_first = (ch1.isPrimitive())
|
|
537
|
-
}
|
|
538
|
-
if use_first {
|
|
539
|
-
def theNode:CodeNode (array_extract a_node2.children 0)
|
|
540
|
-
set curr_node.props a_name theNode
|
|
541
|
-
} {
|
|
542
|
-
set curr_node.props a_name a_node2
|
|
543
|
-
}
|
|
544
|
-
push curr_node.prop_keys a_name
|
|
545
|
-
continue
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
def ns_list@(temp):[string]
|
|
549
|
-
def last_ns:int i
|
|
550
|
-
def ns_cnt:int 1
|
|
551
|
-
def vref_had_type_ann:boolean false
|
|
552
|
-
def vref_ann_node@(optional temp):CodeNode
|
|
553
|
-
def vref_end:int i
|
|
554
|
-
if (i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((charcode "}")) {
|
|
555
|
-
if curr_node.is_block_node == true {
|
|
556
|
-
def new_expr_node:CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
557
|
-
new_expr_node.parent = curr_node
|
|
558
|
-
new_expr_node.expression = true
|
|
559
|
-
push curr_node.children new_expr_node
|
|
560
|
-
curr_node = new_expr_node
|
|
561
|
-
push parents new_expr_node
|
|
562
|
-
paren_cnt = 1 + paren_cnt
|
|
563
|
-
this.parse()
|
|
564
|
-
continue
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
def op_c:int 0
|
|
568
|
-
if ((array_length curr_node.children)) >= 0 {
|
|
569
|
-
op_c = (this.getOperator())
|
|
570
|
-
}
|
|
571
|
-
def last_was_newline:boolean false
|
|
572
|
-
if op_c > 0 {
|
|
573
|
-
} {
|
|
574
|
-
while ((i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((charcode "}"))) {
|
|
575
|
-
if i > sp {
|
|
576
|
-
def is_opchar:int (this.isOperator())
|
|
577
|
-
if is_opchar > 0 {
|
|
578
|
-
break
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
i = 1 + i
|
|
582
|
-
c = (charAt s i)
|
|
583
|
-
if (c == 10) || (c == 13) {
|
|
584
|
-
last_was_newline = true
|
|
585
|
-
break
|
|
586
|
-
}
|
|
587
|
-
if c == ((charcode ".") {
|
|
588
|
-
push ns_list (substring s last_ns i)
|
|
589
|
-
last_ns = i + 1
|
|
590
|
-
ns_cnt = 1 + ns_cnt
|
|
591
|
-
}
|
|
592
|
-
if (i > vref_end) && (c == ((charcode "@")) {
|
|
593
|
-
vref_had_type_ann = true
|
|
594
|
-
vref_end = i
|
|
595
|
-
vref_ann_node = (this.parse_raw_annotation())
|
|
596
|
-
c = (charAt s i)
|
|
597
|
-
break
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
ep = i
|
|
602
|
-
if vref_had_type_ann {
|
|
603
|
-
ep = vref_end
|
|
604
|
-
}
|
|
605
|
-
push ns_list (substring s last_ns ep)
|
|
606
|
-
c = (charAt s i)
|
|
607
|
-
while ((i < len) && (c <= 32) && (false == last_was_newline)) {
|
|
608
|
-
i = 1 + i
|
|
609
|
-
c = (charAt s i)
|
|
610
|
-
if is_block_parent && ((c == 10) || (c == 13)) {
|
|
611
|
-
i = i - 1
|
|
612
|
-
c = (charAt s i)
|
|
613
|
-
had_lf = true
|
|
614
|
-
break
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
if c == 58 {
|
|
618
|
-
i = i + 1
|
|
619
|
-
while ((i < len) && (((charAt s i)) <= 32)) {
|
|
620
|
-
i = 1 + i
|
|
621
|
-
}
|
|
622
|
-
def vt_sp:int i
|
|
623
|
-
def vt_ep:int i
|
|
624
|
-
c = (charAt s i)
|
|
625
|
-
if c == ((charcode "(") {
|
|
626
|
-
def a_node3@(lives):CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
627
|
-
a_node3.expression = true
|
|
628
|
-
curr_node = a_node3
|
|
629
|
-
push parents a_node3
|
|
630
|
-
i = i + 1
|
|
631
|
-
this.parse()
|
|
632
|
-
def new_expr_node:CodeNode (new CodeNode(( unwrap code), sp, vt_ep))
|
|
633
|
-
new_expr_node.vref = (substring s sp ep)
|
|
634
|
-
new_expr_node.ns = ns_list
|
|
635
|
-
new_expr_node.expression_value = a_node3
|
|
636
|
-
new_expr_node.value_type = RangerNodeType.ExpressionType
|
|
637
|
-
if vref_had_type_ann {
|
|
638
|
-
new_expr_node.vref_annotation = vref_ann_node
|
|
639
|
-
new_expr_node.has_vref_annotation = true
|
|
640
|
-
}
|
|
641
|
-
push curr_node.children new_expr_node
|
|
642
|
-
continue
|
|
643
|
-
}
|
|
644
|
-
if c == ((charcode "[") {
|
|
645
|
-
i = i + 1
|
|
646
|
-
vt_sp = i
|
|
647
|
-
def hash_sep:int 0
|
|
648
|
-
def had_array_type_ann:boolean false
|
|
649
|
-
c = (charAt s i)
|
|
650
|
-
while ((i < len) && (c > 32) && (c != 93)) {
|
|
651
|
-
i = 1 + i
|
|
652
|
-
c = (charAt s i)
|
|
653
|
-
if c == ((charcode ":") {
|
|
654
|
-
hash_sep = i
|
|
655
|
-
}
|
|
656
|
-
if c == ((charcode "@") {
|
|
657
|
-
had_array_type_ann = true
|
|
658
|
-
break
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
vt_ep = i
|
|
662
|
-
if hash_sep > 0 {
|
|
663
|
-
vt_ep = i
|
|
664
|
-
def type_name:string (substring s (1 + hash_sep) vt_ep)
|
|
665
|
-
def key_type_name:string (substring s vt_sp hash_sep)
|
|
666
|
-
def new_hash_node:CodeNode (new CodeNode(( unwrap code), sp, vt_ep))
|
|
667
|
-
new_hash_node.vref = (substring s sp ep)
|
|
668
|
-
new_hash_node.ns = ns_list
|
|
669
|
-
new_hash_node.value_type = RangerNodeType.Hash
|
|
670
|
-
new_hash_node.array_type = type_name
|
|
671
|
-
new_hash_node.key_type = key_type_name
|
|
672
|
-
if vref_had_type_ann {
|
|
673
|
-
new_hash_node.vref_annotation = vref_ann_node
|
|
674
|
-
new_hash_node.has_vref_annotation = true
|
|
675
|
-
}
|
|
676
|
-
if had_array_type_ann {
|
|
677
|
-
def vann_hash:CodeNode (this.parse_raw_annotation())
|
|
678
|
-
new_hash_node.type_annotation = vann_hash
|
|
679
|
-
new_hash_node.has_type_annotation = true
|
|
680
|
-
print "--> parsed HASH TYPE annotation"
|
|
681
|
-
}
|
|
682
|
-
new_hash_node.parent = curr_node
|
|
683
|
-
push curr_node.children new_hash_node
|
|
684
|
-
i = 1 + i
|
|
685
|
-
continue
|
|
686
|
-
} {
|
|
687
|
-
vt_ep = i
|
|
688
|
-
def type_name:string (substring s vt_sp vt_ep)
|
|
689
|
-
def new_arr_node:CodeNode (new CodeNode(( unwrap code), sp, vt_ep))
|
|
690
|
-
new_arr_node.vref = (substring s sp ep)
|
|
691
|
-
new_arr_node.ns = ns_list
|
|
692
|
-
new_arr_node.value_type = RangerNodeType.Array
|
|
693
|
-
new_arr_node.array_type = type_name
|
|
694
|
-
new_arr_node.parent = curr_node
|
|
695
|
-
push curr_node.children new_arr_node
|
|
696
|
-
if vref_had_type_ann {
|
|
697
|
-
new_arr_node.vref_annotation = vref_ann_node
|
|
698
|
-
new_arr_node.has_vref_annotation = true
|
|
699
|
-
}
|
|
700
|
-
if had_array_type_ann {
|
|
701
|
-
def vann_arr:CodeNode (this.parse_raw_annotation())
|
|
702
|
-
new_arr_node.type_annotation = vann_arr
|
|
703
|
-
new_arr_node.has_type_annotation = true
|
|
704
|
-
print "--> parsed ARRAY TYPE annotation"
|
|
705
|
-
}
|
|
706
|
-
i = 1 + i
|
|
707
|
-
continue
|
|
708
|
-
}
|
|
709
|
-
}
|
|
710
|
-
def had_type_ann:boolean false
|
|
711
|
-
while ((i < len) && (((charAt s i)) > 32) && (c != 58) && (c != 40) && (c != 41) && (c != ((charcode "}")) && (c != ((charcode ","))) {
|
|
712
|
-
i = 1 + i
|
|
713
|
-
c = (charAt s i)
|
|
714
|
-
if c == ((charcode "@") {
|
|
715
|
-
had_type_ann = true
|
|
716
|
-
break
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
if i < len {
|
|
720
|
-
vt_ep = i
|
|
721
|
-
def type_name:string (substring s vt_sp vt_ep)
|
|
722
|
-
def new_ref_node:CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
723
|
-
new_ref_node.vref = (substring s sp ep)
|
|
724
|
-
new_ref_node.ns = ns_list
|
|
725
|
-
new_ref_node.value_type = RangerNodeType.VRef
|
|
726
|
-
new_ref_node.type_name = (substring s vt_sp vt_ep)
|
|
727
|
-
new_ref_node.parent = curr_node
|
|
728
|
-
if vref_had_type_ann {
|
|
729
|
-
new_ref_node.vref_annotation = vref_ann_node
|
|
730
|
-
new_ref_node.has_vref_annotation = true
|
|
731
|
-
}
|
|
732
|
-
push curr_node.children new_ref_node
|
|
733
|
-
if had_type_ann {
|
|
734
|
-
def vann:CodeNode (this.parse_raw_annotation())
|
|
735
|
-
new_ref_node.type_annotation = vann
|
|
736
|
-
new_ref_node.has_type_annotation = true
|
|
737
|
-
}
|
|
738
|
-
continue
|
|
739
|
-
}
|
|
740
|
-
} {
|
|
741
|
-
if (i < len) && (ep > sp) {
|
|
742
|
-
def new_vref_node:CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
743
|
-
new_vref_node.vref = (substring s sp ep)
|
|
744
|
-
new_vref_node.value_type = RangerNodeType.VRef
|
|
745
|
-
new_vref_node.ns = ns_list
|
|
746
|
-
new_vref_node.parent = curr_node
|
|
747
|
-
def op_pred:int (this.getOperatorPred(new_vref_node.vref))
|
|
748
|
-
if new_vref_node.vref == "," {
|
|
749
|
-
curr_node.infix_operator = false
|
|
750
|
-
continue
|
|
751
|
-
}
|
|
752
|
-
def pTarget@(optional weak):CodeNode curr_node
|
|
753
|
-
if curr_node.infix_operator {
|
|
754
|
-
def iNode@(optional):CodeNode curr_node.infix_node
|
|
755
|
-
if (op_pred > 0) || (iNode.to_the_right == false) {
|
|
756
|
-
pTarget = iNode
|
|
757
|
-
} {
|
|
758
|
-
def rn@(optional lives):CodeNode iNode.right_node
|
|
759
|
-
new_vref_node.parent = rn
|
|
760
|
-
pTarget = rn
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
push pTarget.children new_vref_node
|
|
764
|
-
if vref_had_type_ann {
|
|
765
|
-
new_vref_node.vref_annotation = vref_ann_node
|
|
766
|
-
new_vref_node.has_vref_annotation = true
|
|
767
|
-
}
|
|
768
|
-
if (((charAt s (i + 1))) == ((charcode "(")) || (((charAt s (i + 0))) == ((charcode "(")) {
|
|
769
|
-
if (0 == op_pred) && curr_node.infix_operator && (1 == ((array_length curr_node.children))) {
|
|
770
|
-
}
|
|
771
|
-
}
|
|
772
|
-
if ((op_pred > 0) && curr_node.infix_operator) || ((op_pred > 0) && (((array_length curr_node.children)) >= 2)) {
|
|
773
|
-
if (op_pred == 3) && (2 == ((array_length curr_node.children))) {
|
|
774
|
-
def n_ch:CodeNode (array_extract curr_node.children 0)
|
|
775
|
-
push curr_node.children n_ch
|
|
776
|
-
} {
|
|
777
|
-
if false == curr_node.infix_operator {
|
|
778
|
-
def if_node@(temp lives):CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
779
|
-
curr_node.infix_node = if_node
|
|
780
|
-
curr_node.infix_operator = true
|
|
781
|
-
if_node.infix_subnode = true
|
|
782
|
-
curr_node.value_type = RangerNodeType.NoType
|
|
783
|
-
curr_node.expression = true
|
|
784
|
-
if_node.expression = true
|
|
785
|
-
def ch_cnt:int (array_length curr_node.children)
|
|
786
|
-
def ii:int 0
|
|
787
|
-
def start_from:int ch_cnt - 2
|
|
788
|
-
def keep_nodes:CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
789
|
-
while (ch_cnt > 0) {def n_ch:CodeNode (array_extract curr_node.children 0)
|
|
790
|
-
def p_target:CodeNode if_node
|
|
791
|
-
if (ii < start_from) || n_ch.infix_subnode {
|
|
792
|
-
p_target = keep_nodes
|
|
793
|
-
}
|
|
794
|
-
push p_target.children n_ch
|
|
795
|
-
ch_cnt = ch_cnt - 1
|
|
796
|
-
ii = 1 + ii
|
|
797
|
-
}
|
|
798
|
-
for keep_nodes.children keep:CodeNode i {
|
|
799
|
-
push curr_node.children keep
|
|
800
|
-
}
|
|
801
|
-
push curr_node.children if_node
|
|
802
|
-
}
|
|
803
|
-
def ifNode@(optional lives):CodeNode curr_node.infix_node
|
|
804
|
-
def new_op_node:CodeNode (new CodeNode(( unwrap code), sp, ep))
|
|
805
|
-
new_op_node.expression = true
|
|
806
|
-
new_op_node.parent = ifNode
|
|
807
|
-
def until_index:int ((array_length ifNode.children)) - 1
|
|
808
|
-
def to_right:boolean false
|
|
809
|
-
def just_continue:boolean false
|
|
810
|
-
if (ifNode.operator_pred > 0) && (ifNode.operator_pred < op_pred) {
|
|
811
|
-
to_right = true
|
|
812
|
-
}
|
|
813
|
-
if (ifNode.operator_pred > 0) && (ifNode.operator_pred > op_pred) {
|
|
814
|
-
ifNode.to_the_right = false
|
|
815
|
-
}
|
|
816
|
-
if (ifNode.operator_pred > 0) && (ifNode.operator_pred == op_pred) {
|
|
817
|
-
to_right = ifNode.to_the_right
|
|
818
|
-
}
|
|
819
|
-
def opTarget@(optional):CodeNode ifNode
|
|
820
|
-
if to_right {
|
|
821
|
-
def op_node:CodeNode (array_extract ifNode.children until_index)
|
|
822
|
-
def last_value:CodeNode (array_extract ifNode.children (until_index - 1))
|
|
823
|
-
push new_op_node.children op_node
|
|
824
|
-
push new_op_node.children last_value
|
|
825
|
-
} {
|
|
826
|
-
if false == just_continue {
|
|
827
|
-
while (until_index > 0) {def what_to_add:CodeNode (array_extract ifNode.children 0)
|
|
828
|
-
push new_op_node.children what_to_add
|
|
829
|
-
until_index = until_index - 1
|
|
830
|
-
}
|
|
831
|
-
}
|
|
832
|
-
}
|
|
833
|
-
if to_right || (false == just_continue) {
|
|
834
|
-
push ifNode.children new_op_node
|
|
835
|
-
}
|
|
836
|
-
if to_right {
|
|
837
|
-
ifNode.right_node = new_op_node
|
|
838
|
-
ifNode.to_the_right = true
|
|
839
|
-
}
|
|
840
|
-
ifNode.operator_pred = op_pred
|
|
841
|
-
continue
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
continue
|
|
845
|
-
}
|
|
846
|
-
}
|
|
847
|
-
if (c == 41) || (c == ((charcode "}")) {
|
|
848
|
-
if (c == ((charcode "}")) && is_block_parent && (((array_length curr_node.children)) > 0) {
|
|
849
|
-
this.end_expression()
|
|
850
|
-
}
|
|
851
|
-
i = 1 + i
|
|
852
|
-
paren_cnt = paren_cnt - 1
|
|
853
|
-
if paren_cnt < 0 {
|
|
854
|
-
break
|
|
855
|
-
}
|
|
856
|
-
removeLast parents
|
|
857
|
-
if (!null? curr_node) {
|
|
858
|
-
curr_node.ep = i
|
|
859
|
-
}
|
|
860
|
-
if ((array_length parents)) > 0 {
|
|
861
|
-
curr_node = (itemAt parents (((array_length parents)) - 1))
|
|
862
|
-
} {
|
|
863
|
-
curr_node = rootNode
|
|
864
|
-
}
|
|
865
|
-
break
|
|
866
|
-
}
|
|
867
|
-
if last_i == i {
|
|
868
|
-
i = 1 + i
|
|
869
|
-
}
|
|
870
|
-
}
|
|
871
|
-
}
|
|
872
|
-
}
|
|
873
|
-
}
|