Skip to content

Commit 2d5ba12

Browse files
committed
Получение аргументов командной строки в std::ARGS
1 parent 00e4e9c commit 2d5ba12

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/com/annimon/ownlang/Main.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ public final class Main {
2222

2323
private static final String VERSION = "1.1.0";
2424

25+
private static String[] ownlangArgs = new String[0];
26+
27+
public static String[] getOwnlangArgs() {
28+
return ownlangArgs;
29+
}
30+
2531
public static void main(String[] args) throws IOException {
2632
if (args.length == 0) {
2733
try {
@@ -73,12 +79,17 @@ public static void main(String[] args) throws IOException {
7379
case "--file":
7480
if (i + 1 < args.length) {
7581
input = SourceLoader.readSource(args[i + 1]);
82+
createOwnLangArgs(args, i + 2);
7683
i++;
7784
}
7885
break;
7986

8087
default:
81-
input = args[i];
88+
if (input == null) {
89+
input = args[i];
90+
createOwnLangArgs(args, i + 1);
91+
}
92+
break;
8293
}
8394
}
8495
if (input == null) {
@@ -90,6 +101,12 @@ public static void main(String[] args) throws IOException {
90101
}
91102
run(input, showTokens, showAst, showMeasurements);
92103
}
104+
105+
private static void createOwnLangArgs(String[] javaArgs, int index) {
106+
if (index >= javaArgs.length) return;
107+
ownlangArgs = new String[javaArgs.length - index];
108+
System.arraycopy(javaArgs, index, ownlangArgs, 0, ownlangArgs.length);
109+
}
93110

94111
private static void run(String input, boolean showTokens, boolean showAst, boolean showMeasurements) {
95112
final TimeMeasurement measurement = new TimeMeasurement();

src/com/annimon/ownlang/lib/modules/std.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.annimon.ownlang.lib.modules;
22

3+
import com.annimon.ownlang.Main;
34
import com.annimon.ownlang.lib.*;
45
import com.annimon.ownlang.lib.modules.functions.*;
56

@@ -11,6 +12,8 @@ public final class std implements Module {
1112

1213
@Override
1314
public void init() {
15+
Variables.set("ARGS", ArrayValue.of(Main.getOwnlangArgs()));
16+
1417
Functions.set("echo", new std_echo());
1518
Functions.set("readln", new std_readln());
1619
Functions.set("length", new std_length());

0 commit comments

Comments
 (0)