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
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import java.util.Optional;
|
|
2
|
-
|
|
3
|
-
class CodeSlice {
|
|
4
|
-
public String code = "";
|
|
5
|
-
public Optional<CodeWriter> writer = Optional.empty();
|
|
6
|
-
|
|
7
|
-
public String getCode() {
|
|
8
|
-
if ( !writer.isPresent() ) {
|
|
9
|
-
return code;
|
|
10
|
-
}
|
|
11
|
-
return writer.get().getCode();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import java.util.*;
|
|
2
|
-
import java.util.Optional;
|
|
3
|
-
|
|
4
|
-
class CodeWriter {
|
|
5
|
-
public String tagName = "" /** note: unused */;
|
|
6
|
-
public String codeStr = "" /** note: unused */;
|
|
7
|
-
public String currentLine = "";
|
|
8
|
-
public String tabStr = " ";
|
|
9
|
-
public int lineNumber = 1 /** note: unused */;
|
|
10
|
-
public int indentAmount = 0;
|
|
11
|
-
public HashMap<String,Boolean> compiledTags = new HashMap<String,Boolean>();
|
|
12
|
-
public HashMap<String,Integer> tags = new HashMap<String,Integer>();
|
|
13
|
-
public ArrayList<CodeSlice> slices = new ArrayList<CodeSlice>();
|
|
14
|
-
public Optional<CodeSlice> current_slice = Optional.empty();
|
|
15
|
-
public Optional<CodeFile> ownerFile = Optional.empty();
|
|
16
|
-
public ArrayList<CodeWriter> forks = new ArrayList<CodeWriter>() /** note: unused */;
|
|
17
|
-
public int tagOffset = 0 /** note: unused */;
|
|
18
|
-
public Optional<CodeWriter> parent = Optional.empty();
|
|
19
|
-
public boolean had_nl = true /** note: unused */;
|
|
20
|
-
|
|
21
|
-
CodeWriter( ) {
|
|
22
|
-
final CodeSlice new_slice = new CodeSlice();
|
|
23
|
-
slices.add(new_slice);
|
|
24
|
-
current_slice = Optional.of(new_slice);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public CodeWriter getFileWriter( String path , String fileName ) {
|
|
28
|
-
final Optional<CodeFileSystem> fs = ownerFile.get().fileSystem;
|
|
29
|
-
final CodeFile file = fs.get().getFile(path, fileName);
|
|
30
|
-
final Optional<CodeWriter> wr = file.getWriter();
|
|
31
|
-
return wr.get();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public ArrayList<String> getImports() {
|
|
35
|
-
CodeWriter p = this;
|
|
36
|
-
while ((!p.ownerFile.isPresent()) && (p.parent.isPresent())) {
|
|
37
|
-
p = p.parent.get();
|
|
38
|
-
}
|
|
39
|
-
if ( p.ownerFile.isPresent() ) {
|
|
40
|
-
final CodeFile f = p.ownerFile.get();
|
|
41
|
-
return f.import_names;
|
|
42
|
-
}
|
|
43
|
-
final ArrayList<String> nothing = new ArrayList<String>();
|
|
44
|
-
return nothing;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public void addImport( String name ) {
|
|
48
|
-
if ( ownerFile.isPresent() ) {
|
|
49
|
-
ownerFile.get().addImport(name);
|
|
50
|
-
} else {
|
|
51
|
-
if ( parent.isPresent() ) {
|
|
52
|
-
parent.get().addImport(name);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
public void indent( int delta ) {
|
|
58
|
-
indentAmount = indentAmount + delta;
|
|
59
|
-
if ( indentAmount < 0 ) {
|
|
60
|
-
indentAmount = 0;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public void addIndent() {
|
|
65
|
-
int i = 0;
|
|
66
|
-
if ( 0 == (currentLine.length()) ) {
|
|
67
|
-
while (i < indentAmount) {
|
|
68
|
-
currentLine = currentLine + tabStr;
|
|
69
|
-
i = i + 1;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public CodeWriter createTag( String name ) {
|
|
75
|
-
final CodeWriter new_writer = new CodeWriter();
|
|
76
|
-
final CodeSlice new_slice = new CodeSlice();
|
|
77
|
-
tags.put(name, slices.size());
|
|
78
|
-
slices.add(new_slice);
|
|
79
|
-
new_slice.writer = Optional.of(new_writer);
|
|
80
|
-
new_writer.indentAmount = indentAmount;
|
|
81
|
-
final CodeSlice new_active_slice = new CodeSlice();
|
|
82
|
-
slices.add(new_active_slice);
|
|
83
|
-
current_slice = Optional.of(new_active_slice);
|
|
84
|
-
new_writer.parent = Optional.of(this);
|
|
85
|
-
return new_writer;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
public CodeWriter getTag( String name ) {
|
|
89
|
-
if ( tags.containsKey(name) ) {
|
|
90
|
-
final int idx = (Optional.ofNullable(tags.get(name))).get();
|
|
91
|
-
final CodeSlice slice = slices.get(idx);
|
|
92
|
-
return slice.writer.get();
|
|
93
|
-
} else {
|
|
94
|
-
if ( parent.isPresent() ) {
|
|
95
|
-
return parent.get().getTag(name);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return this;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
public boolean hasTag( String name ) {
|
|
102
|
-
if ( tags.containsKey(name) ) {
|
|
103
|
-
return true;
|
|
104
|
-
} else {
|
|
105
|
-
if ( parent.isPresent() ) {
|
|
106
|
-
return parent.get().hasTag(name);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
public CodeWriter fork() {
|
|
113
|
-
final CodeWriter new_writer = new CodeWriter();
|
|
114
|
-
final CodeSlice new_slice = new CodeSlice();
|
|
115
|
-
slices.add(new_slice);
|
|
116
|
-
new_slice.writer = Optional.of(new_writer);
|
|
117
|
-
new_writer.indentAmount = indentAmount;
|
|
118
|
-
new_writer.parent = Optional.of(this);
|
|
119
|
-
final CodeSlice new_active_slice = new CodeSlice();
|
|
120
|
-
slices.add(new_active_slice);
|
|
121
|
-
current_slice = Optional.of(new_active_slice);
|
|
122
|
-
return new_writer;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
public void newline() {
|
|
126
|
-
if ( (currentLine.length()) > 0 ) {
|
|
127
|
-
this.out("", true);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
public void writeSlice( String str , boolean newLine ) {
|
|
132
|
-
this.addIndent();
|
|
133
|
-
currentLine = currentLine + str;
|
|
134
|
-
if ( newLine ) {
|
|
135
|
-
current_slice.get().code = (current_slice.get().code + currentLine) + "\n";
|
|
136
|
-
currentLine = "";
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
public void out( String str , boolean newLine ) {
|
|
141
|
-
final ArrayList<String> lines = new ArrayList<String>(Arrays.asList(str.split("\n")));
|
|
142
|
-
final int rowCnt = lines.size();
|
|
143
|
-
if ( rowCnt == 1 ) {
|
|
144
|
-
this.writeSlice(str, newLine);
|
|
145
|
-
} else {
|
|
146
|
-
for ( int idx = 0; idx < lines.size(); idx++) {
|
|
147
|
-
String row = lines.get(idx);
|
|
148
|
-
this.addIndent();
|
|
149
|
-
if ( idx < (rowCnt - 1) ) {
|
|
150
|
-
this.writeSlice(row.trim(), true);
|
|
151
|
-
} else {
|
|
152
|
-
this.writeSlice(row, newLine);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
public void raw( String str , boolean newLine ) {
|
|
159
|
-
final ArrayList<String> lines = new ArrayList<String>(Arrays.asList(str.split("\n")));
|
|
160
|
-
final int rowCnt = lines.size();
|
|
161
|
-
if ( rowCnt == 1 ) {
|
|
162
|
-
this.writeSlice(str, newLine);
|
|
163
|
-
} else {
|
|
164
|
-
for ( int idx = 0; idx < lines.size(); idx++) {
|
|
165
|
-
String row = lines.get(idx);
|
|
166
|
-
this.addIndent();
|
|
167
|
-
if ( idx < (rowCnt - 1) ) {
|
|
168
|
-
this.writeSlice(row, true);
|
|
169
|
-
} else {
|
|
170
|
-
this.writeSlice(row, newLine);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
public String getCode() {
|
|
177
|
-
String res = "";
|
|
178
|
-
for ( int idx = 0; idx < slices.size(); idx++) {
|
|
179
|
-
CodeSlice slice = slices.get(idx);
|
|
180
|
-
res = res + slice.getCode();
|
|
181
|
-
}
|
|
182
|
-
res = res + currentLine;
|
|
183
|
-
return res;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import java.util.*;
|
|
2
|
-
import java.io.*;
|
|
3
|
-
import java.lang.StringBuilder;
|
|
4
|
-
import java.io.File;
|
|
5
|
-
import java.util.Optional;
|
|
6
|
-
import java.nio.file.Paths;
|
|
7
|
-
import java.nio.file.Files;
|
|
8
|
-
import java.nio.charset.Charset;
|
|
9
|
-
import java.nio.charset.StandardCharsets;
|
|
10
|
-
|
|
11
|
-
class CompilerInterface {
|
|
12
|
-
|
|
13
|
-
static String joinStrings(ArrayList<String> list, String delimiter)
|
|
14
|
-
{
|
|
15
|
-
StringBuilder b = new StringBuilder();
|
|
16
|
-
for(int i=0; i < list.size() ; i++) {
|
|
17
|
-
if( i > 0 ) {
|
|
18
|
-
b.append(delimiter);
|
|
19
|
-
}
|
|
20
|
-
b.append(list.get(i));
|
|
21
|
-
}
|
|
22
|
-
return b.toString();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
static String readFile(String path, Charset encoding)
|
|
27
|
-
{
|
|
28
|
-
try {
|
|
29
|
-
byte[] encoded = Files.readAllBytes(Paths.get(path));
|
|
30
|
-
return new String(encoded, encoding);
|
|
31
|
-
} catch(IOException e) {
|
|
32
|
-
return "";
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
public static void main(String [] args ) {
|
|
38
|
-
final ArrayList<String> allowed_languages = new ArrayList<String>(Arrays.asList("es6","go","scala","java7","swift3","cpp","php","ranger")) ;
|
|
39
|
-
if ( (args.length) < 5 ) {
|
|
40
|
-
System.out.println(String.valueOf( "Ranger compiler, version 2.0.8" ) );
|
|
41
|
-
System.out.println(String.valueOf( "usage <file> <language-file> <language> <directory> <targetfile>" ) );
|
|
42
|
-
System.out.println(String.valueOf( "allowed languages: " + (joinStrings(allowed_languages, " ")) ) );
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
final String the_file = args[0];
|
|
46
|
-
final String the_lang_file = args[1];
|
|
47
|
-
final String the_lang = args[2];
|
|
48
|
-
final String the_target_dir = args[3];
|
|
49
|
-
final String the_target = args[4];
|
|
50
|
-
System.out.println(String.valueOf( "language == " + the_lang ) );
|
|
51
|
-
if ( (allowed_languages.indexOf(the_lang)) < 0 ) {
|
|
52
|
-
System.out.println(String.valueOf( "Invalid language : " + the_lang ) );
|
|
53
|
-
/** unused: final String s = "" **/ ;
|
|
54
|
-
System.out.println(String.valueOf( "allowed languages: " + (joinStrings(allowed_languages, " ")) ) );
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
if ( (new File("." + '/' + the_file).exists()) == false ) {
|
|
58
|
-
System.out.println(String.valueOf( "Could not compile." ) );
|
|
59
|
-
System.out.println(String.valueOf( "File not found: " + the_file ) );
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if ( (new File("." + '/' + the_lang_file).exists()) == false ) {
|
|
63
|
-
System.out.println(String.valueOf( ("language file " + the_lang_file) + " not found!" ) );
|
|
64
|
-
System.out.println(String.valueOf( "download: https://raw.githubusercontent.com/terotests/Ranger/master/compiler/Lang.clj" ) );
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
System.out.println(String.valueOf( "File to be compiled: " + the_file ) );
|
|
68
|
-
final Optional<String> c = Optional.of(readFile("." + "/" + the_file , StandardCharsets.UTF_8 ));
|
|
69
|
-
final SourceCode code = new SourceCode(c.get());
|
|
70
|
-
code.filename = the_file;
|
|
71
|
-
final RangerLispParser parser = new RangerLispParser(code);
|
|
72
|
-
parser.parse();
|
|
73
|
-
final LiveCompiler lcc = new LiveCompiler();
|
|
74
|
-
final CodeNode node = parser.rootNode.get();
|
|
75
|
-
final RangerFlowParser flowParser = new RangerFlowParser();
|
|
76
|
-
final RangerAppWriterContext appCtx = new RangerAppWriterContext();
|
|
77
|
-
final CodeWriter wr = new CodeWriter();
|
|
78
|
-
long startTime = System.nanoTime();
|
|
79
|
-
try {
|
|
80
|
-
flowParser.mergeImports(node, appCtx, wr);
|
|
81
|
-
final Optional<String> lang_str = Optional.of(readFile("." + "/" + the_lang_file , StandardCharsets.UTF_8 ));
|
|
82
|
-
final SourceCode lang_code = new SourceCode(lang_str.get());
|
|
83
|
-
lang_code.filename = the_lang_file;
|
|
84
|
-
final RangerLispParser lang_parser = new RangerLispParser(lang_code);
|
|
85
|
-
lang_parser.parse();
|
|
86
|
-
appCtx.langOperators = Optional.of(lang_parser.rootNode.get());
|
|
87
|
-
appCtx.setRootFile(the_file);
|
|
88
|
-
System.out.println(String.valueOf( "1. Collecting available methods." ) );
|
|
89
|
-
flowParser.CollectMethods(node, appCtx, wr);
|
|
90
|
-
if ( (appCtx.compilerErrors.size()) > 0 ) {
|
|
91
|
-
CompilerInterface.displayCompilerErrors(appCtx);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
System.out.println(String.valueOf( "2. Analyzing the code." ) );
|
|
95
|
-
appCtx.targetLangName = the_lang;
|
|
96
|
-
System.out.println(String.valueOf( "selected language is " + appCtx.targetLangName ) );
|
|
97
|
-
flowParser.StartWalk(node, appCtx, wr);
|
|
98
|
-
if ( (appCtx.compilerErrors.size()) > 0 ) {
|
|
99
|
-
CompilerInterface.displayCompilerErrors(appCtx);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
System.out.println(String.valueOf( "3. Compiling the source code." ) );
|
|
103
|
-
final CodeFileSystem fileSystem = new CodeFileSystem();
|
|
104
|
-
final CodeFile file = fileSystem.getFile(".", the_target);
|
|
105
|
-
final Optional<CodeWriter> wr_1 = file.getWriter();
|
|
106
|
-
Optional<RangerAppClassDesc> staticMethods = Optional.empty();
|
|
107
|
-
final CodeWriter importFork = wr_1.get().fork();
|
|
108
|
-
for ( int i = 0; i < appCtx.definedClassList.size(); i++) {
|
|
109
|
-
String cName = appCtx.definedClassList.get(i);
|
|
110
|
-
if ( cName.equals("RangerStaticMethods") ) {
|
|
111
|
-
staticMethods = Optional.ofNullable(appCtx.definedClasses.get(cName));
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
final Optional<RangerAppClassDesc> cl = Optional.ofNullable(appCtx.definedClasses.get(cName));
|
|
115
|
-
if ( cl.get().is_trait ) {
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
if ( cl.get().is_system ) {
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
if ( cl.get().is_system_union ) {
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
lcc.WalkNode(cl.get().classNode.get(), appCtx, wr_1.get());
|
|
125
|
-
}
|
|
126
|
-
if ( staticMethods.isPresent() ) {
|
|
127
|
-
lcc.WalkNode(staticMethods.get().classNode.get(), appCtx, wr_1.get());
|
|
128
|
-
}
|
|
129
|
-
for ( int i_1 = 0; i_1 < flowParser.collectedIntefaces.size(); i_1++) {
|
|
130
|
-
RangerAppClassDesc ifDesc = flowParser.collectedIntefaces.get(i_1);
|
|
131
|
-
System.out.println(String.valueOf( "should define also interface " + ifDesc.name ) );
|
|
132
|
-
lcc.langWriter.get().writeInterface(ifDesc, appCtx, wr_1.get());
|
|
133
|
-
}
|
|
134
|
-
final ArrayList<String> import_list = wr_1.get().getImports();
|
|
135
|
-
if ( appCtx.targetLangName.equals("go") ) {
|
|
136
|
-
importFork.out("package main", true);
|
|
137
|
-
importFork.newline();
|
|
138
|
-
importFork.out("import (", true);
|
|
139
|
-
importFork.indent(1);
|
|
140
|
-
}
|
|
141
|
-
for ( int i_2 = 0; i_2 < import_list.size(); i_2++) {
|
|
142
|
-
String codeStr = import_list.get(i_2);
|
|
143
|
-
switch (appCtx.targetLangName ) {
|
|
144
|
-
case "go" :
|
|
145
|
-
if ( ((int)codeStr.charAt(0)) == (((("_".getBytes())[0]))) ) {
|
|
146
|
-
importFork.out((" _ \"" + (codeStr.substring(1, (codeStr.length()) ))) + "\"", true);
|
|
147
|
-
} else {
|
|
148
|
-
importFork.out(("\"" + codeStr) + "\"", true);
|
|
149
|
-
}
|
|
150
|
-
break;
|
|
151
|
-
case "rust" :
|
|
152
|
-
importFork.out(("use " + codeStr) + ";", true);
|
|
153
|
-
break;
|
|
154
|
-
case "cpp" :
|
|
155
|
-
importFork.out(("#include " + codeStr) + "", true);
|
|
156
|
-
break;
|
|
157
|
-
default:
|
|
158
|
-
importFork.out(("import " + codeStr) + "", true);
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
if ( appCtx.targetLangName.equals("go") ) {
|
|
163
|
-
importFork.indent(-1);
|
|
164
|
-
importFork.out(")", true);
|
|
165
|
-
}
|
|
166
|
-
fileSystem.saveTo(the_target_dir);
|
|
167
|
-
System.out.println(String.valueOf( "Ready." ) );
|
|
168
|
-
CompilerInterface.displayCompilerErrors(appCtx);
|
|
169
|
-
} catch( Exception e) {
|
|
170
|
-
if ( lcc.lastProcessedNode.isPresent()) {
|
|
171
|
-
System.out.println(String.valueOf( "Got compiler error close to" ) );
|
|
172
|
-
System.out.println(String.valueOf( lcc.lastProcessedNode.get().getLineAsString() ) );
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
if ( flowParser.lastProcessedNode.isPresent()) {
|
|
176
|
-
System.out.println(String.valueOf( "Got compiler error close to" ) );
|
|
177
|
-
System.out.println(String.valueOf( flowParser.lastProcessedNode.get().getLineAsString() ) );
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
System.out.println(String.valueOf( "Got unknown compiler error" ) );
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
long elapsedTime = System.nanoTime() - startTime;
|
|
184
|
-
System.out.println( "Total time"+ String.valueOf((double)elapsedTime / 1000000000.0));
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
public static void displayCompilerErrors( RangerAppWriterContext appCtx ) {
|
|
188
|
-
final ColorConsole cons = new ColorConsole();
|
|
189
|
-
for ( int i_3 = 0; i_3 < appCtx.compilerErrors.size(); i_3++) {
|
|
190
|
-
RangerCompilerMessage e = appCtx.compilerErrors.get(i_3);
|
|
191
|
-
final int line_index = e.node.get().getLine();
|
|
192
|
-
cons.out("gray", (e.node.get().getFilename() + " Line: ") + (1 + line_index));
|
|
193
|
-
cons.out("gray", e.description);
|
|
194
|
-
cons.out("gray", e.node.get().getLineString(line_index));
|
|
195
|
-
cons.out("", e.node.get().getColStartString() + "^-------");
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
public static void displayParserErrors( RangerAppWriterContext appCtx ) {
|
|
200
|
-
if ( (appCtx.parserErrors.size()) == 0 ) {
|
|
201
|
-
System.out.println(String.valueOf( "no language test errors" ) );
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
System.out.println(String.valueOf( "LANGUAGE TEST ERRORS:" ) );
|
|
205
|
-
for ( int i_4 = 0; i_4 < appCtx.parserErrors.size(); i_4++) {
|
|
206
|
-
RangerCompilerMessage e_1 = appCtx.parserErrors.get(i_4);
|
|
207
|
-
final int line_index_1 = e_1.node.get().getLine();
|
|
208
|
-
System.out.println(String.valueOf( (e_1.node.get().getFilename() + " Line: ") + (1 + line_index_1) ) );
|
|
209
|
-
System.out.println(String.valueOf( e_1.description ) );
|
|
210
|
-
System.out.println(String.valueOf( e_1.node.get().getLineString(line_index_1) ) );
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|