From 485fe60b9838708a07b1d1af7054c729cfa9bbf5 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 21 Jun 2016 22:28:38 +0300 Subject: Add builtin function 'concat' --- main/core/runtime/builtins/BuiltinManager.java | 1 + .../runtime/builtins/ConcatBuiltinFunction.java | 38 ++++++++++++++++++++++ test/resources/program.bork | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 main/core/runtime/builtins/ConcatBuiltinFunction.java diff --git a/main/core/runtime/builtins/BuiltinManager.java b/main/core/runtime/builtins/BuiltinManager.java index e001cda..a16d8e9 100644 --- a/main/core/runtime/builtins/BuiltinManager.java +++ b/main/core/runtime/builtins/BuiltinManager.java @@ -20,6 +20,7 @@ public class BuiltinManager { private BuiltinManager() { builtins.add(new OutBuiltinFunction()); builtins.add(new InBuiltinFunction()); + builtins.add(new ConcatBuiltinFunction()); } public List getBuiltins() { diff --git a/main/core/runtime/builtins/ConcatBuiltinFunction.java b/main/core/runtime/builtins/ConcatBuiltinFunction.java new file mode 100644 index 0000000..5f87a38 --- /dev/null +++ b/main/core/runtime/builtins/ConcatBuiltinFunction.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; + +/** + * Created by jan on 21.6.2016. + */ +public class ConcatBuiltinFunction extends Function { + public ConcatBuiltinFunction() { + super( + Arrays.asList("strings"), + null + ); + } + + @Override + public String getName() { + return "concat"; + } + + @Override + public DataContainer evaluate(List params) throws InterpreterException { + StringBuilder sb = new StringBuilder(); + for (DataContainer d : params) { + sb.append(d.getData()); + } + + return new StringDataContainer( + sb.toString() + ); + } +} diff --git a/test/resources/program.bork b/test/resources/program.bork index 8159939..0901bd7 100644 --- a/test/resources/program.bork +++ b/test/resources/program.bork @@ -14,7 +14,7 @@ sum(x y) decl user_input set user_input in("give input: ") -out( + + "your input was " user_input "!" ) +out( concat("your input was: " user_input "!") ) decl var set var true -- cgit v1.3