From c1a905b5020c4f2f4ade85577e0c36811be87de4 Mon Sep 17 00:00:00 2001
From: Ferenc Szontágh <szf@fsociety.hu>
Date: Mon, 14 Apr 2025 09:08:34 +0000
Subject: [PATCH] packaging, docs
---
cli/main.cpp | 49 +++++---
cmake/options.h.in | 19 +-
src/ScriptInterpreterHelpers.hpp | 4
assets/linux/DESCRIPTION.txt | 4
src/ScriptInterpreter.cpp | 19 --
CMakeLists.txt | 156 +++++++++++++++++--------
LICENSE | 21 +++
cmake/AppVersion.cmake | 9 +
.clangd | 5
README.md | 55 ++++++++
src/ScriptInterpreter.hpp | 4
11 files changed, 245 insertions(+), 100 deletions(-)
diff --git a/.clangd b/.clangd
index d96eb21..1843e4d 100644
--- a/.clangd
+++ b/.clangd
@@ -1,2 +1,5 @@
CompileFlags:
- Add: [-Wunused]
\ No newline at end of file
+ Add: [-Wunused]
+
+Index:
+ StandardLibrary: No
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a5af0a9..14318e8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,100 +1,150 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.20)
project(
voidscript
LANGUAGES CXX
VERSION 0.0.1
- )
+ DESCRIPTION "A simple scripting language"
+ HOMEPAGE_URL "https://github.com/fszontagh/voidshell"
+)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
set(NEED_CLI ON)
-set(NEED_TESTS OFF)
-set(NEED_STATIC_LIBS ON)
-set(NEED_SHARED_LIBS ON)
option(BUILD_CLI, "Build example commandline intrepeter" ${NEED_CLI})
-option(BUILD_TESTS, "Build tests" ${NEED_TESTS})
-option(BUILD_SHARED_LIBS "Build shared library" ${NEED_SHARED_LIBS})
-option(BUILD_STATIC_LIBS "Build static library" ${NEED_STATIC_LIBS})
+option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
+
if (BUILD_CLI)
set(NEED_CLI ${BUILD_CLI})
endif()
-if (BUILD_TESTS)
- set(NEED_TESTS ${BUILD_TESTS})
-endif()
-if (BUILD_SHARED_LIBS)
- set(NEED_SHARED_LIBS ${BUILD_SHARED_LIBS})
-endif()
-
-if (BUILD_STATIC_LIBS)
- set(NEED_STATIC_LIBS ${BUILD_STATIC_LIBS})
-endif()
+include(cmake/AppVersion.cmake)
set(COMMENT_CHARACTER "#")
set(PARSER_OPEN_TAG "<?void")
set(PARSER_CLOSE_TAG "?>")
message(STATUS "BUILD_CLI: ${NEED_CLI}")
-message(STATUS "BUILD_TESTS: ${NEED_TESTS}")
-message(STATUS "BUILD_SHARED_LIBS: ${NEED_SHARED_LIBS}")
-message(STATUS "BUILD_STATIC_LIBS: ${NEED_STATIC_LIBS}")
+message(STATUS "BUILD_SHARED_LIBS: ${BUILD_SHARED_LIBS}")
message(STATUS " COMMENT_CHARACTER: ${COMMENT_CHARACTER}")
message(STATUS " PARSER_OPEN_TAG: ${PARSER_OPEN_TAG}")
message(STATUS " PARSER_CLOSE_TAG: ${PARSER_CLOSE_TAG}")
+message(STATUS "APP_GIT_VERSION: ${APP_GIT_VERSION}")
if (CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
-
-
message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
set(DEBUG_BUILD ON)
- set(COMPILE_WARNING_AS_ERROR ON)
+ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()
+
+# PACKAGING PROPERTIES
+set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/assets/linux/DESCRIPTION.txt")
+set(CPACK_PACKAGE_CONTACT "Ferenc Szontágh <szf@fsociety.hu>")
+set(CPACK_PACKAGE_VENDOR "fszontagh")
+set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/fszontagh/voidscript")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Voidscript a simple scripting language")
+set(CPACK_PACKAGE_CHECKSUM "SHA512")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
+set(CPACK_DEBIAN_PACKAGE_DEPENDS "")
+set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
+#set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
+set(CPACK_STRIP_FILES YES)
+
+set(
+ CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
+ OWNER_READ OWNER_WRITE OWNER_EXECUTE
+ GROUP_READ GROUP_EXECUTE
+ WORLD_READ WORLD_EXECUTE
+)
+set(CPACK_PACKAGING_INSTALL_PREFIX "/")
+
+set(ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
+
+if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ execute_process(
+ COMMAND bash -c "source /etc/lsb-release && echo \"$DISTRIB_CODENAME\""
+ OUTPUT_VARIABLE DISTRIB_CODENAME
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ set(CPACK_SYSTEM_NAME ${DISTRIB_CODENAME})
+ message(STATUS "Detected DISTRIB_CODENAME: ${DISTRIB_CODENAME}")
+
+ find_program(DPKG dpkg)
+ if (DPKG)
+ execute_process(COMMAND ${DPKG} --print-architecture OUTPUT_VARIABLE ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
+ endif()
+
+
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(ARCHITECTURE "amd64")
+ elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
+ set(ARCHITECTURE "i386")
+ else()
+ message(STATUS "Célarchitektúra: Nem meghatározható (CMAKE_SIZEOF_VOID_P: ${CMAKE_SIZEOF_VOID_P})")
+ endif()
+endif()
+
+message(STATUS "System architecture: ${ARCHITECTURE}")
+
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "/")
+endif()
+
+include(GNUInstallDirs)
+# PACKAGING PROPERTIES END
configure_file("cmake/options.h.in" "include/options.h" @ONLY)
configure_file("test_scripts/test1.vs" "test_scripts/test1.vs" @ONLY)
configure_file("test_scripts/test2.vs" "test_scripts/test2.vs" @ONLY)
+include_directories(${CMAKE_BINARY_DIR}/include src)
-include_directories(${CMAKE_BINARY_DIR}/include)
-include_directories(src)
-
-
-file(GLOB_RECURSE SOURCES
- src/main.cpp
- src/ScriptInterpreter.cpp
- src/Lexer.cpp
+# LIBRARY TARGET
+add_library(voidscript
+ src/ScriptInterpreter.cpp
+ src/Lexer.cpp
)
-if (NEED_SHARED_LIBS)
- add_library(${CMAKE_PROJECT_NAME} SHARED)
- target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${SOURCES})
- set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES OUTPUT_NAME ${CMAKE_PROJECT_NAME})
-endif()
-if (NEED_STATIC_LIBS)
- add_library(${CMAKE_PROJECT_NAME}_static STATIC)
- target_sources(${CMAKE_PROJECT_NAME}_static PRIVATE ${SOURCES})
- set_target_properties(${CMAKE_PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${CMAKE_PROJECT_NAME})
-endif()
+install(TARGETS voidscript DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT "lib")
+set(CPACK_DEBIAN_LIB_FILE_NAME "libvoidscript_${CMAKE_PROJECT_VERSION}_${ARCHITECTURE}_${CPACK_SYSTEM_NAME}.deb")
+set(CPACK_DEBIAN_LIB_PACKAGE_NAME "libvoidscript")
+set(CPACK_DEBIAN_LIB_PACKAGE_SECTION "libs")
+set_target_properties(voidscript PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION 1)
+message(STATUS "CMAKE_SYSTEM: ${CMAKE_SYSTEM}")
+
+set_target_properties(voidscript PROPERTIES
+ LINKER_LANGUAGE CXX
+ LIBRARY_OUTPUT_NAME voidscript
+)
-set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
-
+# EXECUTABLE TARGET
if (NEED_CLI)
- add_executable(cli cli/main.cpp)
- add_dependencies(cli ${CMAKE_PROJECT_NAME})
- if (BUILD_SHARED_LIBS)
- target_link_libraries(cli ${CMAKE_PROJECT_NAME})
- else()
- target_link_libraries(cli ${CMAKE_PROJECT_NAME}_static)
- endif()
-endif()
\ No newline at end of file
+ add_executable(voidscript-cli cli/main.cpp)
+ target_link_libraries(voidscript-cli voidscript)
+ install(TARGETS voidscript-cli DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT "bin")
+ set_target_properties(voidscript-cli PROPERTIES
+ LINKER_LANGUAGE CXX
+ OUTPUT_NAME voidscript)
+ set(CPACK_PACKAGE_EXECUTABLES voidscript-cli "Simple Shell")
+ set(CPACK_DEBIAN_BIN_FILE_NAME "voidscript_${CMAKE_PROJECT_VERSION}_${ARCHITECTURE}_${CPACK_SYSTEM_NAME}.deb")
+ set(CPACK_DEBIAN_BIN_PACKAGE_NAME "voidscript")
+ set(CPACK_DEBIAN_BIN_PACKAGE_SECTION "interpreters")
+ set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS ${CMAKE_BINARY_DIR})
+ set(CPACK_DEBIAN_BIN_PACKAGE_DEPENDS "libvoidscript (= ${CMAKE_PROJECT_VERSION})")
+endif()
+
+# CPACK CONFIGURATION
+set(CPACK_DEB_COMPONENT_INSTALL ON)
+
+include(CPack)
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..964d7de
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 fszontagh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 526e1df..d9a4cc3 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,55 @@
-## soniscript
+## voidscript
-A simple scripting language in C++
+A lightweight scripting language designed for simplicity and ease of use.
+### Features
+
+- Simple and intuitive syntax
+- Built-in standard library
+- Cross-platform compatibility
+- Easy to embed in other applications
+- No external dependencies
+
+### Installation
+
+```bash
+git clone https://github.com/fszontagh/voidscript.git
+cd voidscript
+cmake -S . -B build
+cmake --build build
+```
+
+### Quick Start
+
+```voidscript
+# Hello World example
+print("Hello,", "", "World!", "\n");
+
+# Variables
+int x = 42;
+string name = "VoidScript";
+
+// Functions
+function $add(int $a, double $b, string $help) {
+ int $result = $a + $b;
+ print("The sum is: ", $result, "\n");
+ print("Help: ", $help, "\n");
+ return $result;
+}
+```
+
+### Documentation
+
+For detailed documentation, please visit the [Wiki](https://github.com/fszontagh/voidscript/wiki).
+
+### Contributing
+
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add some amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
+
+### License
+
+This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
\ No newline at end of file
diff --git a/assets/linux/DESCRIPTION.txt b/assets/linux/DESCRIPTION.txt
new file mode 100644
index 0000000..d131194
--- /dev/null
+++ b/assets/linux/DESCRIPTION.txt
@@ -0,0 +1,4 @@
+A simple scripting language in C++
+
+voidscript is a lightweight scripting language implementation written in C++.
+It provides a simple syntax for writing scripts and can be embedded in other applications.
\ No newline at end of file
diff --git a/cli/main.cpp b/cli/main.cpp
index cf15e33..67bfb52 100644
--- a/cli/main.cpp
+++ b/cli/main.cpp
@@ -5,35 +5,48 @@
#include "Builtins/SleepModule.hpp"
#include "ScriptInterpreter.hpp"
-static bool DEBUG = false;
+const std::unordered_map<std::string, std::string> params = {
+ { "--help", "Print this help message" },
+ { "--version", "Print the version of the program" },
+};
int main(int argc, char * argv[]) {
+ std::string usage = "Usage: " + std::string(argv[0]);
+ for (const auto & [key, value] : params) {
+ usage.append(" [" + key + "]");
+ }
if (argc < 2) {
- std::cerr << "Usage: " << argv[0] << " [-d / --debug] <script_file>\n";
+ std::cerr << usage << "\n";
return 1;
}
std::string file;
- if (argc == 2) {
- file = argv[1];
- } else if (argc == 3) {
- if (std::string(argv[1]) == "-d" || std::string(argv[1]) == "--debug") {
- DEBUG = true;
- file = argv[2];
- } else if (argv[1] == "-h" || argv[1] == "--help") {
- std::cout << "Usage: " << argv[0] << " [-d / --debug] <script_file>\n";
+
+ const std::string arg = std::string(argv[1]);
+ if (arg.starts_with("-")) {
+ auto it = params.find(arg);
+ if (it != params.end()) {
+ if (arg == "--help") {
+ std::cout << usage << "\n";
+ for (const auto & [key, value] : params) {
+ std::cout << " " << key << ": " << value << "\n";
+ }
+ return 0;
+ }
+ if (arg == "--version") {
+ std::cout << "Version: " << VERSION_MAJOR << "." << VERSION_MINOR << "." << VERSION_PATCH;
+ std::cout << " (" << VERSION_GIT_HASH << ")\n";
+ std::cout << "Architecture: " << VERSION_ARCH << "\n";
+ std::cout << "System: " << VERSION_SYSTEM_NAME << "\n";
+ return 0;
+ }
return 0;
- } else if (argv[1] == "-v" || argv[1] == "--vrsion") {
- std::cout << "VoidScript v" << VERSION_STRING << "\n";
- return 0;
- } else {
- std::cerr << "Usage: " << argv[0] << " [-d / --debug] <script_file>\n";
- return 1;
}
- } else {
- std::cerr << "Usage: " << argv[0] << " [-d / --debug] <script_file>\n";
+ std::cerr << "Error: Unknown option " << arg << "\n";
+ std::cerr << usage << "\n";
return 1;
}
+ file = arg;
if (!std::filesystem::exists(file)) {
std::cerr << "Error: File " << file << " does not exist.\n";
diff --git a/cmake/AppVersion.cmake b/cmake/AppVersion.cmake
new file mode 100644
index 0000000..f666993
--- /dev/null
+++ b/cmake/AppVersion.cmake
@@ -0,0 +1,9 @@
+find_package(Git QUIET REQUIRED)
+
+execute_process(
+ COMMAND "${GIT_EXECUTABLE}" describe --always HEAD
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ RESULT_VARIABLE res
+ OUTPUT_VARIABLE APP_GIT_VERSION
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
\ No newline at end of file
diff --git a/cmake/options.h.in b/cmake/options.h.in
index c457729..7fb70bd 100644
--- a/cmake/options.h.in
+++ b/cmake/options.h.in
@@ -10,13 +10,16 @@
#else
const char EOL = '\n';
#endif
-const char COMMENT_CHARACTER = '@COMMENT_CHARACTER@';
-const static char * PARSER_OPEN_TAG = "@PARSER_OPEN_TAG@";
-const static char * PARSER_CLOSE_TAG = "@PARSER_CLOSE_TAG@";
-const static char * VERSION_MINOR = "@CMAKE_PROJECT_VERSION_MINOR@";
-const static char * VERSION_MAJOR = "@CMAKE_PROJECT_VERSION_MAJOR@";
-const static char * VERSION_PATCH = "@CMAKE_PROJECT_VERSION_PATCH@";
-const static char * VERSION_STRING = "@CMAKE_PROJECT_VERSION@-@CMAKE_BUILD_TYPE@-@CMAKE_SYSTEM@";
+const char COMMENT_CHARACTER = '@COMMENT_CHARACTER@';
+const static char * PARSER_OPEN_TAG = "@PARSER_OPEN_TAG@";
+const static char * PARSER_CLOSE_TAG = "@PARSER_CLOSE_TAG@";
+const static char * VERSION_MINOR = "@CMAKE_PROJECT_VERSION_MINOR@";
+const static char * VERSION_MAJOR = "@CMAKE_PROJECT_VERSION_MAJOR@";
+const static char * VERSION_PATCH = "@CMAKE_PROJECT_VERSION_PATCH@";
+const static char * VERSION_ARCH = "@ARCHITECTURE@";
+const static char * VERSION_SYSTEM_NAME = "@CMAKE_SYSTEM_NAME@";
+const static char * VERSION_GIT_HASH = "@APP_GIT_VERSION@";
+const static char * VERSION_STRING = "v@CMAKE_PROJECT_VERSION@-@CMAKE_SYSTEM_NAME@-@ARCHITECTURE@-@CMAKE_BUILD_TYPE@";
#cmakedefine01 DEBUG_BUILD
-#endif // VOIDSCRIPT_OPTIONS_H
\ No newline at end of file
+#endif // VOIDSCRIPT_OPTIONS_H
diff --git a/src/ScriptInterpreter.cpp b/src/ScriptInterpreter.cpp
index 3735ba0..ee7cf20 100644
--- a/src/ScriptInterpreter.cpp
+++ b/src/ScriptInterpreter.cpp
@@ -140,7 +140,7 @@
};
void ScriptInterpreter::handleStringDeclaration(const std::vector<Token> & tokens, std::size_t & i) {
- const auto varToken = tokens[i];
+ const auto & varToken = tokens[i];
i++; // Skip variable name
if (i < tokens.size() && tokens[i].type == TokenType::Equals) {
@@ -211,7 +211,6 @@
void ScriptInterpreter::handleFunctionDeclaration(const std::vector<Token> & tokens, std::size_t & i) {
const auto varName = tokens[i].lexeme;
- const auto varType = tokens[i].variableType;
i++; // skip funct name
@@ -231,15 +230,15 @@
// parse arg definitions
const auto args = ScriptInterpreterHelpers::parseFunctionDeclarationArguments(tokens, i, __FILE__, __LINE__);
- std::cout << "args: " << args.size() << std::endl;
+ std::cout << "args: " << args.size() << '\n';
for (const auto & arg : args) {
- std::cout << "arg name: " << arg.GetToken().lexeme << " type: " << arg.TypeToString() << std::endl;
+ std::cout << "arg name: " << arg.GetToken().lexeme << " type: " << arg.TypeToString() << '\n';
}
this->functionParameters[varName].assign(args.begin(), args.end());
size_t start;
size_t end;
ScriptInterpreterHelpers::getFunctionBody(tokens, i, start, end);
- std::cout << "Body start: " << start << " end: " << end << std::endl;
+ std::cout << "Body start: " << start << " end: " << end << '\n';
const std::string function_body = ScriptInterpreterHelpers::extractSubstring(this->source, start, end);
this->functionBodies[varName] = function_body;
// recheck the close curly brace
@@ -248,7 +247,7 @@
}
i++;
#if DEBUG_BUILD == 1
- std::cout << "function body: \n\"" << function_body << "\"" << std::endl;
+ std::cout << "function body: \n\"" << function_body << "\"" << '\n';
#endif
}
@@ -295,14 +294,6 @@
} else {
THROW_UNEXPECTED_TOKEN_ERROR(tokens[i - 1], "'=' for assignment");
}
-}
-
-void ScriptInterpreter::handleComment(std::size_t & i) {
- i++; // Skip comment token
-}
-
-void ScriptInterpreter::handleSemicolon(std::size_t & i) {
- i++; // Skip semicolon token
}
void ScriptInterpreter::executeScript(const std::string & source, const std::string & filename,
diff --git a/src/ScriptInterpreter.hpp b/src/ScriptInterpreter.hpp
index 803ef66..50bdfa9 100644
--- a/src/ScriptInterpreter.hpp
+++ b/src/ScriptInterpreter.hpp
@@ -110,8 +110,8 @@
void handleFunctionCall(const std::vector<Token> & tokens, std::size_t & i);
void handleVariableReference(const std::vector<Token> & tokens, std::size_t & i);
- void handleComment(std::size_t & i);
- void handleSemicolon(std::size_t & i);
+ static void handleComment(std::size_t & i){ i++;}
+ static void handleSemicolon(std::size_t & i) {i++;};
void handleStringDeclaration(const std::vector<Token> & tokens, std::size_t & i);
void handleBooleanDeclaration(const std::vector<Token> & tokens, std::size_t & i);
void handleNumberDeclaration(const std::vector<Token> & tokens, std::size_t & i, TokenType type);
diff --git a/src/ScriptInterpreterHelpers.hpp b/src/ScriptInterpreterHelpers.hpp
index debd1bc..9238a06 100644
--- a/src/ScriptInterpreterHelpers.hpp
+++ b/src/ScriptInterpreterHelpers.hpp
@@ -75,7 +75,7 @@
std::size_t & end) {
start = tokens[i].pos.end;
std::cout << "START Token: " << tokens[i].lexeme << " start pos: " << std::to_string(tokens[i].pos.start)
- << " end pos: " << std::to_string(tokens[i].pos.end) << std::endl;
+ << " end pos: " << std::to_string(tokens[i].pos.end) << '\n';
if (i >= tokens.size() || tokens[i].type != TokenType::LeftCurlyBracket) {
THROW_UNEXPECTED_TOKEN_ERROR(tokens[i], "{");
@@ -96,7 +96,7 @@
end = tokens[i].pos.start - 1;
std::cout << "END Token: " << tokens[i].lexeme << " start pos: " << std::to_string(tokens[i].pos.start)
- << " end pos: " << std::to_string(tokens[i].pos.end) << std::endl;
+ << " end pos: " << std::to_string(tokens[i].pos.end) << '\n';
if (i >= tokens.size() || tokens[i].type != TokenType::RightCurlyBracket) {
THROW_UNEXPECTED_TOKEN_ERROR(tokens[i], "}");
--
Gitblit v1.9.3