mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44: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 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 {
|
public static void main(String[] args) throws IOException {
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
try {
|
try {
|
||||||
@ -73,12 +79,17 @@ public final class Main {
|
|||||||
case "--file":
|
case "--file":
|
||||||
if (i + 1 < args.length) {
|
if (i + 1 < args.length) {
|
||||||
input = SourceLoader.readSource(args[i + 1]);
|
input = SourceLoader.readSource(args[i + 1]);
|
||||||
|
createOwnLangArgs(args, i + 2);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
if (input == null) {
|
||||||
input = args[i];
|
input = args[i];
|
||||||
|
createOwnLangArgs(args, i + 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (input == null) {
|
if (input == null) {
|
||||||
@ -91,6 +102,12 @@ public final class Main {
|
|||||||
run(input, showTokens, showAst, showMeasurements);
|
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) {
|
private static void run(String input, boolean showTokens, boolean showAst, boolean showMeasurements) {
|
||||||
final TimeMeasurement measurement = new TimeMeasurement();
|
final TimeMeasurement measurement = new TimeMeasurement();
|
||||||
measurement.start("Tokenize time");
|
measurement.start("Tokenize time");
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.Main;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import com.annimon.ownlang.lib.modules.functions.*;
|
import com.annimon.ownlang.lib.modules.functions.*;
|
||||||
|
|
||||||
@ -11,6 +12,8 @@ public final class std implements Module {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
|
Variables.set("ARGS", ArrayValue.of(Main.getOwnlangArgs()));
|
||||||
|
|
||||||
Functions.set("echo", new std_echo());
|
Functions.set("echo", new std_echo());
|
||||||
Functions.set("readln", new std_readln());
|
Functions.set("readln", new std_readln());
|
||||||
Functions.set("length", new std_length());
|
Functions.set("length", new std_length());
|
||||||
|
Loading…
Reference in New Issue
Block a user