mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Получение аргументов командной строки в std::ARGS
This commit is contained in:
parent
00e4e9cb39
commit
2d5ba12770
@ -22,6 +22,12 @@ public final class Main {
|
||||
|
||||
private static final String VERSION = "1.1.0";
|
||||
|
||||
private static String[] ownlangArgs = new String[0];
|
||||
|
||||
public static String[] getOwnlangArgs() {
|
||||
return ownlangArgs;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
if (args.length == 0) {
|
||||
try {
|
||||
@ -73,12 +79,17 @@ public final class Main {
|
||||
case "--file":
|
||||
if (i + 1 < args.length) {
|
||||
input = SourceLoader.readSource(args[i + 1]);
|
||||
createOwnLangArgs(args, i + 2);
|
||||
i++;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
input = args[i];
|
||||
if (input == null) {
|
||||
input = args[i];
|
||||
createOwnLangArgs(args, i + 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (input == null) {
|
||||
@ -90,6 +101,12 @@ public final class Main {
|
||||
}
|
||||
run(input, showTokens, showAst, showMeasurements);
|
||||
}
|
||||
|
||||
private static void createOwnLangArgs(String[] javaArgs, int index) {
|
||||
if (index >= javaArgs.length) return;
|
||||
ownlangArgs = new String[javaArgs.length - index];
|
||||
System.arraycopy(javaArgs, index, ownlangArgs, 0, ownlangArgs.length);
|
||||
}
|
||||
|
||||
private static void run(String input, boolean showTokens, boolean showAst, boolean showMeasurements) {
|
||||
final TimeMeasurement measurement = new TimeMeasurement();
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.annimon.ownlang.lib.modules;
|
||||
|
||||
import com.annimon.ownlang.Main;
|
||||
import com.annimon.ownlang.lib.*;
|
||||
import com.annimon.ownlang.lib.modules.functions.*;
|
||||
|
||||
@ -11,6 +12,8 @@ public final class std implements Module {
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
Variables.set("ARGS", ArrayValue.of(Main.getOwnlangArgs()));
|
||||
|
||||
Functions.set("echo", new std_echo());
|
||||
Functions.set("readln", new std_readln());
|
||||
Functions.set("length", new std_length());
|
||||
|
Loading…
Reference in New Issue
Block a user