From bb809670621accc4ac57b989d05ac68ce6cd94b9 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 21 Jun 2016 22:05:40 +0300 Subject: Add builtin function 'in' --- main/core/runtime/builtins/BuiltinManager.java | 1 + main/core/runtime/builtins/InBuiltinFunction.java | 38 +++++++++++++++++++++++ test/resources/program.bork | 4 +++ 3 files changed, 43 insertions(+) create mode 100644 main/core/runtime/builtins/InBuiltinFunction.java diff --git a/main/core/runtime/builtins/BuiltinManager.java b/main/core/runtime/builtins/BuiltinManager.java index 21027a6..e001cda 100644 --- a/main/core/runtime/builtins/BuiltinManager.java +++ b/main/core/runtime/builtins/BuiltinManager.java @@ -19,6 +19,7 @@ public class BuiltinManager { private BuiltinManager() { builtins.add(new OutBuiltinFunction()); + builtins.add(new InBuiltinFunction()); } public List getBuiltins() { diff --git a/main/core/runtime/builtins/InBuiltinFunction.java b/main/core/runtime/builtins/InBuiltinFunction.java new file mode 100644 index 0000000..32d6b72 --- /dev/null +++ b/main/core/runtime/builtins/InBuiltinFunction.java @@ -0,0 +1,38 @@ +package com.jantuomi.interpreter.main.core.runtime.builtins; + +import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; +import com.jantuomi.interpreter.main.core.parser.datatype.StringDataContainer; +import com.jantuomi.interpreter.main.core.runtime.Function; +import com.jantuomi.interpreter.main.exception.InterpreterException; + +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; + +/** + * Created by jan on 21.6.2016. + */ +public class InBuiltinFunction extends Function { + public InBuiltinFunction() { + super( + Arrays.asList("expression"), + null + ); + } + + @Override + public String getName() { + return "in"; + } + + @Override + public DataContainer evaluate(List params) throws InterpreterException { + if (params.size() > 0) { + DataContainer param = params.get(0); + System.out.print(param.getData().toString()); + } + Scanner in = new Scanner(System.in); + String userInput = in.nextLine(); + return new StringDataContainer(userInput); + } +} diff --git a/test/resources/program.bork b/test/resources/program.bork index 885d858..8159939 100644 --- a/test/resources/program.bork +++ b/test/resources/program.bork @@ -12,6 +12,10 @@ set y 20 sum(x y) */ +decl user_input +set user_input in("give input: ") +out( + + "your input was " user_input "!" ) + decl var set var true -- cgit v1.3