Coder Social home page Coder Social logo

hertzscript / compiler Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 1.0 26 KB

Produces preemptible JavaScript coroutines which conform to the HertzScript specification.

License: MIT License

JavaScript 100.00%
coroutines automatic-concurrency javascript concurrent preemptive preemption interruption coroutine preemptible stackless-coroutines

compiler's Introduction

HertzScript Coroutine Compiler

NPM

The HertzScript compiler produces preemptible JavaScript coroutines which conform to the HertzScript specification.

The HertzScript Dispatcher can be used to execute the compiled code.

See the HertzScript Specification repository for more information.

Usage

There are two different ways to use this:

  1. Import the compiler module into your script.

  2. Invoke hzc via terminal.

Compiler Module

This module serves as the core of the HzScript compilation pipeline, and transforms JavaScript functions into instruction streams; all functions within a HzScript program are GeneratorFunctions which yield instructions.

Exported as a single function, you can invoke it like so:

const hzCompile = require("hertzscript-compiler");
const sourceCode = "console.log('Hello World!')";
const compiledCode = hzCompile(sourceCode);

Return Value

The function returns a string which is the compiled JavaScript code.

Function Parameters

hzCompile( source [, module  = false [, standalone = false [, spawn = false ]]]);

source

  • The input JavaScript source code you would like to compile.

module (Optional)

  • If true then the compiled source code will be output as a HertzScript module. Defaults to false.

standalone (Optional)

  • If true then the compiled source code will be output as a self-running HertzScript module. Defaults to false.

spawn (Optional)

  • If true then the spawn keyword compiler will be used to detect and compile the spawn keyword. Defaults to false.

Command-Line Interface

The hzc command imports the compiler module and wraps it in a simple command-line interface.

You can invoke the interface script like so, shown here with the spawn compiler enabled and the ouput code wrapped in --standalone mode:

echo "spawn console.log('Hello World!')" | hzc --spawn -s

You can also supply input and output paths with the -i and -o parameters:

hzc -i path/to/my/script.js -o path/to/my/output.hz.js

Command-Line Options

-s (--standalone)

  • If set, then the compiled source code will be output as a self-running HertzScript module

-i path (--input)

  • This option supplies the text from the given filepath as the input JavaScript source code you would like to compile. If this option is set to nothing, or is not set at all, then the source code is consumed via the standard input of the terminal.

-o path (--output)

  • This option specifies a filepath which the compiled source code will be saved to. If this option is set to nothing, or is not set at all, then the source code is returned via standard output into the terminal.

-m (--module)

  • If set, then the compiled source code will be output as a HertzScript module.

--spawn

  • If set, then the spawn keyword compiler will be used to detect and compile the spawn keyword.

compiler's People

Contributors

floofies avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

marvin1003

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.