Skip to content

Commit cbef8c5

Browse files
committed
Compiler: Allow the addition of native functions
1 parent 727e47e commit cbef8c5

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

src/main/java/org/piccode/backend/Compiler.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.piccode.rt.PiccodeBoolean;
2222
import org.piccode.rt.PiccodeException;
2323
import org.piccode.rt.PiccodeReturnException;
24-
import org.piccode.rt.PiccodeString;
2524
import org.piccode.rt.PiccodeUnit;
2625
import org.piccode.rt.PiccodeValue;
2726
import org.piccode.rt.PiccodeWarning;
@@ -44,6 +43,8 @@
4443
*/
4544
public class Compiler {
4645

46+
private static List<Runnable> nativeFunctions = new ArrayList<>();
47+
4748
public static PiccodeValue compile(String file, String code) {
4849
return compile(file, code, List.of());
4950
}
@@ -150,19 +151,22 @@ public static void prepareGlobalScope(String file, String globalScopeName) {
150151
addSystemFunctions();
151152
}
152153

154+
public static void addNativeFunctions(Runnable funcs) {
155+
funcs.run();
156+
}
153157
private static void addSystemFunctions() {
154-
PiccodeIOModule.addFunctions();
155-
PiccodeArrayModule.addFunctions();
156-
PiccodeStringModule.addFunctions();
157-
PiccodeTupleModule.addFunctions();
158-
PiccodeMathModule.addFunctions();
159-
PiccodeSystemModule.addFunctions();
160-
PiccodeTimeModule.addFunctions();
161-
PiccodeTypesModule.addFunctions();
162-
PiccodeVirtualModule.addFunctions();
163-
PiccodeFileModule.addFunctions();
164-
PiccodeFsModule.addFunctions();
165-
PiccodeObjectModule.addFunctions();
158+
addNativeFunctions(PiccodeIOModule::addFunctions);
159+
addNativeFunctions(PiccodeArrayModule::addFunctions);
160+
addNativeFunctions(PiccodeStringModule::addFunctions);
161+
addNativeFunctions(PiccodeTupleModule::addFunctions);
162+
addNativeFunctions(PiccodeMathModule::addFunctions);
163+
addNativeFunctions(PiccodeSystemModule::addFunctions);
164+
addNativeFunctions(PiccodeTimeModule::addFunctions);
165+
addNativeFunctions(PiccodeTypesModule::addFunctions);
166+
addNativeFunctions(PiccodeVirtualModule::addFunctions);
167+
addNativeFunctions(PiccodeFileModule::addFunctions);
168+
addNativeFunctions(PiccodeFsModule::addFunctions);
169+
addNativeFunctions(PiccodeObjectModule::addFunctions);
166170

167171
Context.addAnnotation("Deprecated", (frame, node) -> {
168172
var warning = new PiccodeWarning(node.file, node.line, node.column, "Invocation of a deprecated function");

0 commit comments

Comments
 (0)