Started work on the CeeV language.

master
Ruben Dahl 2023-01-13 20:21:15 +01:00
commit b8d5dd5673
12 changed files with 278 additions and 0 deletions

78
.gitignore vendored 100644
View File

@ -0,0 +1,78 @@
# Created by https://www.toptal.com/developers/gitignore/api/cmake,c++,visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=cmake,c++,visualstudiocode
### C++ ###
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
### CMake ###
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
### CMake Patch ###
# External projects
*-prefix/
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# End of https://www.toptal.com/developers/gitignore/api/cmake,c++,visualstudiocode
build/
.ccls
.ccls-cache/

52
CMakeLists.txt 100644
View File

@ -0,0 +1,52 @@
cmake_minimum_required(VERSION 3.7)
project(ceev VERSION 0.1.0 DESCRIPTION "The language of the CeeV project")
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git log -1 --pretty=%B
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_MSG
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(CMAKE_CXX_STANDARD 17)
add_library(${PROJECT_NAME} SHARED src/lang.cc src/lang.h src/colors.cc
src/colors.h)
set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER
"src/lang.h;src/colors.h")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/ceevConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/ceevConfig.cmake
@ONLY
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/ceevConfig.cmake
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/cmake/ceev
)
install(TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION /usr/local/lib/
PUBLIC_HEADER DESTINATION /usr/local/include/ceev
)
# install(TARGETS ${PROJECT_NAME}
# LIBRARY DESTINATION /usr/lib
# PUBLIC_HEADER DESTINATION /usr/include/ceev)
# install(TARGETS ${PROJECT_NAME} LIBRARY)
target_compile_definitions(${PROJECT_NAME} PRIVATE
"-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
string(REPLACE "\n" "\\n" GIT_COMMIT_MSG "${GIT_COMMIT_MSG}")
target_compile_definitions(${PROJECT_NAME} PRIVATE
"-DGIT_COMMIT_MSG=\"${GIT_COMMIT_MSG}\"")

3
README.md 100644
View File

@ -0,0 +1,3 @@
# Ceev Lang
This is a supplementary to the CeeV project.
More to come.

View File

@ -0,0 +1,6 @@
@PACKAGE_INIT@
set(ceev_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include/ceev")
set(ceev_LIBRARIES "@CMAKE_INSTALL_PREFIX@/lib/libceev.so")
# find_package(ceev)

14
ex/CMakeLists.txt 100644
View File

@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.7)
project(ceevlang-test)
set(CMAKE_CXX_STANDARD 17)
find_library(CEEV NAMES ceev HINTS "/usr/local/include" REQUIRED)
include_directories(${CEEV_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} src/test.cc src/test.h)
target_link_libraries(${PROJECT_NAME} ${CEEV_LIBRARIES})
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)

6
ex/src/test.cc 100644
View File

@ -0,0 +1,6 @@
#include "test.h"
int main() {
std::cout << bg_bright_green(red("Hello World")) << std::endl;
return 0;
}

4
ex/src/test.h 100644
View File

@ -0,0 +1,4 @@
#pragma once
#include <ceev/colors.h>
#include <iostream>

4
examples/test.cv 100644
View File

@ -0,0 +1,4 @@
let test = Character("Test")
test "Hello World"
unlet test

37
src/colors.cc 100644
View File

@ -0,0 +1,37 @@
#include "colors.h"
std::string black(std::string input) {return "\x1b[30m" + input + "\x1b[0m";}
std::string red(std::string input) {return "\x1b[31m" + input + "\x1b[0m";}
std::string green(std::string input) {return "\x1b[32m" + input + "\x1b[0m";}
std::string yellow(std::string input) {return "\x1b[33m" + input + "\x1b[0m";}
std::string blue(std::string input) {return "\x1b[34m" + input + "\x1b[0m";}
std::string magenta(std::string input) {return "\x1b[35m" + input + "\x1b[0m";}
std::string cyan(std::string input) {return "\x1b[36m" + input + "\x1b[0m";}
std::string white(std::string input) {return "\x1b[37m" + input + "\x1b[0m";}
std::string bright_black(std::string input) {return "\x1b[90m" + input + "\x1b[0m";}
std::string bright_red(std::string input) {return "\x1b[91m" + input + "\x1b[0m";}
std::string bright_green(std::string input) {return "\x1b[92m" + input + "\x1b[0m";}
std::string bright_yellow(std::string input) {return "\x1b[93m" + input + "\x1b[0m";}
std::string bright_blue(std::string input) {return "\x1b[94m" + input + "\x1b[0m";}
std::string bright_magenta(std::string input) {return "\x1b[95m" + input + "\x1b[0m";}
std::string bright_cyan(std::string input) {return "\x1b[96m" + input + "\x1b[0m";}
std::string bright_white(std::string input) {return "\x1b[97m" + input + "\x1b[0m";}
std::string bg_black(std::string input) {return "\x1b[40m" + input + "\x1b[0m";}
std::string bg_red(std::string input) {return "\x1b[41m" + input + "\x1b[0m";}
std::string bg_green(std::string input) {return "\x1b[42m" + input + "\x1b[0m";}
std::string bg_yellow(std::string input) {return "\x1b[43m" + input + "\x1b[0m";}
std::string bg_blue(std::string input) {return "\x1b[44m" + input + "\x1b[0m";}
std::string bg_magenta(std::string input) {return "\x1b[45m" + input + "\x1b[0m";}
std::string bg_cyan(std::string input) {return "\x1b[46m" + input + "\x1b[0m";}
std::string bg_white(std::string input) {return "\x1b[47m" + input + "\x1b[0m";}
std::string bg_bright_black(std::string input) {return "\x1b[100m" + input + "\x1b[0m";}
std::string bg_bright_red(std::string input) {return "\x1b[101m" + input + "\x1b[0m";}
std::string bg_bright_green(std::string input) {return "\x1b[102m" + input + "\x1b[0m";}
std::string bg_bright_yellow(std::string input) {return "\x1b[103m" + input + "\x1b[0m";}
std::string bg_bright_blue(std::string input) {return "\x1b[104m" + input + "\x1b[0m";}
std::string bg_bright_magenta(std::string input) {return "\x1b[105m" + input + "\x1b[0m";}
std::string bg_bright_cyan(std::string input) {return "\x1b[106m" + input + "\x1b[0m";}
std::string bg_bright_white(std::string input) {return "\x1b[107m" + input + "\x1b[0m";}
std::string bold(std::string input) {return "\x1b[1m" + input + "\x1b[0m";}
std::string underline(std::string input) {return "\x1b[4m" + input + "\x1b[0m";}
std::string reverse(std::string input) {return "\x1b[7m" + input + "\x1b[0m";}

39
src/colors.h 100644
View File

@ -0,0 +1,39 @@
#pragma once
#include <string>
std::string black(std::string input);
std::string red(std::string input);
std::string green(std::string input);
std::string yellow(std::string input);
std::string blue(std::string input);
std::string magenta(std::string input);
std::string cyan(std::string input);
std::string white(std::string input);
std::string bright_black(std::string input);
std::string bright_red(std::string input);
std::string bright_green(std::string input);
std::string bright_yellow(std::string input);
std::string bright_blue(std::string input);
std::string bright_magenta(std::string input);
std::string bright_cyan(std::string input);
std::string bright_white(std::string input);
std::string bg_black(std::string input);
std::string bg_red(std::string input);
std::string bg_green(std::string input);
std::string bg_yellow(std::string input);
std::string bg_blue(std::string input);
std::string bg_magenta(std::string input);
std::string bg_cyan(std::string input);
std::string bg_white(std::string input);
std::string bg_bright_black(std::string input);
std::string bg_bright_red(std::string input);
std::string bg_bright_green(std::string input);
std::string bg_bright_yellow(std::string input);
std::string bg_bright_blue(std::string input);
std::string bg_bright_magenta(std::string input);
std::string bg_bright_cyan(std::string input);
std::string bg_bright_white(std::string input);
std::string bold(std::string input);
std::string underline(std::string input);
std::string reverse(std::string input);

21
src/lang.cc 100644
View File

@ -0,0 +1,21 @@
#include "lang.h"
int read_file(std::deque<std::string> args) {
if (args.empty()) {
std::cout << bg_red(bold("ERROR")) << ": No file input" << std::endl;
return 1;
}
fs::path filename = args[0];
args.pop_front();
std::ifstream file(filename);
if (!file) {
std::cout << bg_red(bold("ERROR")) << ": Could not find file" << std::endl;
return 1;
}
std::string line;
while (std::getline(file, line)) {
std::istringstream stream(line);
}
return 0;
}

14
src/lang.h 100644
View File

@ -0,0 +1,14 @@
#pragma once
#include "colors.h"
#include <deque>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <map>
#include <sstream>
#include <string>
namespace fs = std::filesystem;
int read_file(std::deque<std::string> args);