0.94.0 • Published 2 months ago

jejalyk v0.94.0

Weekly downloads
-
License
-
Repository
-
Last release
2 months ago

Джеджалик

Швидкий компілятор Мавки в JavaScript.

Використання

C++

#include <string>
#include "jejalyk.hpp"

jejalyk::GetModuleResult* get_module_name(bool relative, std::string module, jejalyk::CompilationOptions* options) {
    // ...
}

jejalyk::GetModuleResult* get_module_path(bool relative, std::string module, jejalyk::CompilationOptions* options) {
    // ...
}

jejalyk::GetModuleResult* get_module_code(bool relative, std::string module, jejalyk::CompilationOptions* options) {
    // ...
}

jejalyk::GetModuleResult* get_pak(std::string name, std::string version, std::string as, jejalyk::CompilationOptions* options) {
    // ...
}

int main() {
    const auto options = new jejalyk::CompilationOptions();
    options->args = "";
    options->std_code = "";
    options->root_module_path = "";
    options->current_module_path = "";
    options->get_module_name = &get_module_name;
    options->get_module_path = &get_module_path;
    options->get_module_code = &get_module_code;
    options->get_pak = &get_pak;

    const auto result = jejalyk::compile("друк(\"Привіт від Івана!\")", options);
    if (result->error) {
        std::cout << result->error->message << std::endl;
    } else {
        std::cout << result->result << std::endl;
    }

    return 0;
}

Node.js

npm i jejalyk
import Module from "jejalyk/node";

global.mavka_compilation_options = {
  args: "",
  std_code: "",
  main_module_path: "",
  root_module_path: "",
  current_module_path: "",
  get_module_name: async (relative, module, options) => {
    return { error: "", result: "" };
  },
  // ...
};

Module().then(async (jejalyk) => {
  const result = await jejalyk.compile(`друк("Привіт від Івана!")`);
  console.log(result);
});

Web

<script src="./dist/optimized_jejalyk_web.js"></script>
<script>
  window.mavka_compilation_options = {
    args: "",
    std_code: "",
    main_module_path: "",
    root_module_path: "",
    current_module_path: "",
    get_module_name: async (relative, module, options) => {
      return { error: "", result: "" };
    },
    // ...
  };

  Module.onRuntimeInitialized = async () => {
    const result = await Module.compile(`друк("Привіт від Івана!")`);
    console.log(result);
  };
</script>

Розробка

Вимоги

  • C++20
  • CMake
  • Make
  • Node.js
  • Emscripten
  • Java (для ANTLR4)

Початок

git clone https://github.com/mavka-ukr/jejalyk
cd jejalyk
npm install

Будування

./build.sh antlr4 # antlr4 grammar
./build.sh node # node wasm
./build.sh web # web wasm
./build.sh all # node wasm and web wasm
./build.sh Onode # optimized node wasm
./build.sh Oweb # optimized web wasm
./build.sh Oall # optimized node wasm and optimized web wasm
./dist.sh # release (node and web)

Використання

Після побудови випускової версії через dist.sh ви можете потестувати пакет виконавши цю команду в теці з проектом:

npm i -g .

У вас встановиться локальний пакет джеджалика, який ви можете використовувати як звичайний, встановлений з npm. Майте наувазі, що випускову версію через dist.sh ви будуєте в себе для тестування. А от для PR вам треба залишити теку dist незмінною. Будь ласка, перед відправкою PR впевніться, що тека dist не змінилась.

0.94.0

2 months ago

0.93.0

2 months ago

0.92.0

2 months ago

0.91.4

4 months ago

0.91.0

4 months ago

0.91.1

4 months ago

0.91.2

4 months ago

0.91.3

4 months ago

0.90.9

4 months ago

0.90.5

4 months ago

0.90.6

4 months ago

0.90.7

4 months ago

0.90.8

4 months ago

0.90.3

4 months ago

0.90.4

4 months ago

0.90.2

4 months ago

0.89.10

4 months ago

0.89.11

4 months ago

0.89.12

4 months ago

0.90.0

4 months ago

0.90.1

4 months ago

0.89.5

4 months ago

0.2.18

5 months ago

0.3.0

5 months ago

0.2.17

5 months ago

0.2.16

5 months ago

0.2.15

5 months ago

0.2.13

5 months ago

0.2.12

5 months ago

0.2.1

5 months ago

0.2.0

5 months ago

0.2.7

5 months ago

0.2.6

5 months ago

0.2.8

5 months ago

0.2.2

5 months ago

0.2.5

5 months ago

0.2.4

5 months ago

0.1.12

5 months ago

0.1.13

5 months ago

0.1.14

5 months ago

0.1.15

5 months ago

0.1.27

5 months ago

0.1.20

5 months ago

0.1.21

5 months ago

0.1.23

5 months ago

0.1.24

5 months ago

0.1.25

5 months ago

0.1.26

5 months ago

0.1.16

5 months ago

0.1.17

5 months ago

0.1.18

5 months ago

0.1.19

5 months ago

0.1.11

5 months ago

0.1.10

5 months ago

0.1.9

5 months ago

0.1.8

5 months ago

0.1.7

5 months ago

0.1.6

5 months ago

0.1.5

5 months ago

0.1.4

5 months ago

0.1.3

5 months ago

0.1.2

5 months ago

0.1.0

5 months ago