Merge pull request #4 from avinal/improved

Add binder, copyright header and gitpod
This commit is contained in:
2021-11-02 23:33:31 +05:30
committed by GitHub
12 changed files with 140 additions and 85 deletions

3
.gitignore vendored
View File

@@ -3,4 +3,5 @@
/cpm_modules
.DS_Store
.idea
.cache
.cache
./share/jupyter/kernels/xbasic/kernel.json

View File

@@ -1,3 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
FROM gitpod/workspace-full:latest
USER root

View File

@@ -1,3 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
image:
file: .gitpod.dockerfile
ports:

View File

@@ -1,3 +1,9 @@
#[=============================================================================[
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 Sarita Singh <saritasingh.0425@gmail.com>
# SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
#]=============================================================================]
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
# ---- Project ----

View File

@@ -1,3 +1,82 @@
# xeus-BASIC
```scala
`7MM***Yy. db .M***by. `7MMF' .g8***bg.
MM Yb ;MM: ,MI `Y MM .dP' `M
`7M' `MF' MM .P ,V^MM. `MMb. MM dM' `
`VA ,V' MMooon* ,M `MM `YMMNq. MM MM
XMX MM `Y. AbmmmqMA . `MM MM MM.
,V' VA. MM ,9 A' VML Mb dM MM `Mb. .'
.AM. .MA..JMMonald'AMA. .AMMA.`*Ybmmd* .JMML. `*bMond^
```
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/avinal/xeus-basic/HEAD) [![GitHub license](https://img.shields.io/github/license/avinal/xeus-basic)](https://github.com/avinal/xeus-basic/blob/master/LICENSE)
Jupyter Kernel for BASIC language
## Steps to run the project:
**You can directly click on *launch binder* badge above to use this kernel right in your browser.***
* Clone this repository.
* Download miniconda [link](https://conda.io/projects/conda/en/latest/user-guide/install/linux.html#installing-on-linux)
* Create a virual env
``` bash
conda create -n vbasic
```
* Activate virtual environment that you created
```bash
conda activate vbasic
```
* Install dependencies
```bash
conda install -c conda-forge jupyter xeus xtl nlohmann_json cppzmq
```
* Make a build directory to store all the build files
```bash
mkdir build && cd build
```
* Configure CMake
```bash
cmake .. -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX
```
* Build the project
```bash
make
```
* Install application
```bash
make install
```
* Launch Jupyter Notebook in the browser
```bash
jupyter notebook
```
* Launch Jupyter Notebook in the terminal
```bash
jupyter console --kernel=xbasic
```
## Created By
- [Sarita Singh](https://github.com/itssingh)
- [Avinal Kumar](https://github.com/avinal)
## Acknowledgement
The BASIC language parser used in this project is a modified version of the [basic](https://github.com/nanoflite/basic) project created by [Johan Van den Brande](https://github.com/nanoflite).

View File

@@ -1,3 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
name: xeus-basic
channels:
- conda-forge

View File

@@ -1,3 +1,12 @@
/**
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: 2021 Sarita Singh <saritasingh.0425@gmail.com>
* SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
*
* @file xbasic_interpreter.hpp
* @brief Jupyter Kernel Interpreter header file
*/
#ifndef XBASIC_INTERPRETER_HPP_
#define XBASIC_INTERPRETER_HPP_

View File

@@ -1,7 +1,7 @@
#[=======================================================================[
SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
#]=======================================================================]
#[=============================================================================[
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
#]=============================================================================]
cmake_minimum_required(VERSION 3.16)
project(basic LANGUAGES C)
@@ -11,8 +11,8 @@ add_library(basic "")
target_sources(basic PRIVATE ${BASIC_SRC})
target_include_directories(basic PRIVATE include/basic)
#add_executable(basic_exec main.cc)
#target_include_directories(basic_exec PRIVATE include/basic)
#target_link_libraries(basic_exec PRIVATE basic)
add_executable(basic_exec main.cc)
target_include_directories(basic_exec PRIVATE include/basic)
target_link_libraries(basic_exec PRIVATE basic)

View File

@@ -6,49 +6,13 @@
* @brief Driver Code
*/
// #include <math.h>
// #include <readline/history.h>
// #include <readline/readline.h>
// #include <signal.h>
// #include <stdbool.h>
// #include <stdio.h>
// #include <string.h>
#include <fstream>
#include <iostream>
#include <sstream>
#include "basic.hpp"
#include "basic/basic.hpp"
// extern bool __RUNNING;
// extern bool __STOPPED;
// static void sigint_handler(int signum) {
// signal(SIGINT, sigint_handler);
// if (__RUNNING) {
// __RUNNING = false;
// __STOPPED = true;
// printf("STOP\n");
// fflush(stdout);
// }
// }
// static char *readline_gets() {
// char *line_read = readline("");
// if (line_read && *line_read) {
// add_history(line_read);
// }
// return line_read;
// }
std::string outputs;
// int out(int ch) {
// outputs += char(ch);
// return 1;
// }
// int in(void) { return getchar(); }
void replcc() {
std::cout << " _ _ \n"
@@ -57,56 +21,22 @@ void replcc() {
<< "| |_) | (_| \\__ \\ | (__ \n"
<< "|_.__/ \\__,_|___/_|\\___|\n"
<< "(c) 2015-2016 Johan Van den Brande\n";
// using_history();
std::string input;
basic check;
while (getline(std::cin, input)) {
if (!input.compare("QUIT")) {
// check.~basic();
break;
}
if (!check.evaluate_line(input)) {
std::cerr << check.get_error() << "\n";
}
// basic_eval((char *)input.c_str());
if (input == "RUN") {
std::cout << check.run();
}
// if (evaluate_last_error()) {
// std::cerr << "ERROR: " << evaluate_last_error() << "\n";
// clear_last_error();
// }
}
// clear_history();
}
void runcc(std::string filename) {
// std::fstream file(filename, std::ios::in);
// if (!file.is_open()) {
// std::cerr << "Can't open " << filename << std::endl;
// exit(EXIT_FAILURE);
// }
// std::string line;
// while (getline(file, line)) {
// basic_eval((char *)line.c_str());
// }
// file.close();
// basic_run();
}
int main(int argc, char *argv[]) {
// signal(SIGINT, sigint_handler);
// basic_init(1024 * 8, 2048);
// basic_register_io(out, in);
if (argc > 1) {
runcc(argv[1]);
} else {
replcc();
}
// basic_destroy();
replcc();
return EXIT_SUCCESS;
}

View File

@@ -1,9 +1,13 @@
mkdir build
#! /bin/sh
cd build
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
echo $CONDA_PREFIX
# Create a directory for build
mkdir build && cd build || exit
cmake -D CMAKE_INSTALL_PREFIX=$CONDA_PREFIX ..
# Configure CMake
cmake -D CMAKE_INSTALL_PREFIX="/srv/conda/envs/notebook" ..
# Install the Kernel
make install

View File

@@ -1,3 +1,12 @@
/**
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: 2021 Sarita Singh <saritasingh.0425@gmail.com>
* SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
*
* @file main.cc
* @brief Jupyter Kernel main program
*/
#include <memory>
#include "xbasic/xbasic_interpreter.hpp"

View File

@@ -1,3 +1,11 @@
/**
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: 2021 Sarita Singh <saritasingh.0425@gmail.com>
* SPDX-FileCopyrightText: 2021 Avinal Kumar <avinal.xlvii@gmail.com>
*
* @file xbasic_interpreter.cpp
* @brief Jupyter Kernel Interpreter Implementation
*/
#include "xbasic/xbasic_interpreter.hpp"