https://github.com/raphamorim/js2c
[WIP] Transform JavaScript into ANSI C
https://github.com/raphamorim/js2c
Last synced: about 1 year ago
JSON representation
[WIP] Transform JavaScript into ANSI C
- Host: GitHub
- URL: https://github.com/raphamorim/js2c
- Owner: raphamorim
- Created: 2016-01-21T19:26:40.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-01-11T19:22:28.000Z (over 9 years ago)
- Last Synced: 2025-05-07T15:05:21.307Z (about 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 3.19 MB
- Stars: 14
- Watchers: 4
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# js2c - JavaScript to C
#### WORK IN PROGRESS, BUT [YOU CAN HELP](https://github.com/raphamorim/js2c/issues)
> Transform JavaScript in C
[](https://coveralls.io/github/raphamorim/js2c?branch=master) [](https://travis-ci.org/raphamorim/js2c.js)
## Summary
- [Why js2c?](#why)
- [Getting](#getting)
- [Usage](#usage)
- [Simple Usage](#simple-usage)
- [Methods](#methods)
- [Parse](#parse)
- [Compile](#compile)
- [Exec](#exec)
- [Notes](#notes)
- [Roadmap](#roadmap)
## Why?
The idea is bring the possibility of development to complex platforms like PS4, PS3, PSP and PS Vita using JavaScript to native applications. In a close future JS2C will be able to read and understand external packages.
And the other reason: [Why Not?](https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js).
## Getting
Verify if you have [node](https://nodejs.org/en/) and [npm](https://www.npmjs.org/) installed.
```shell
npm install js2c
```
## Usage
### Simple Usage
Then do the Magic.
```javascript
var js2c = require("js2c"),
jsString = " function sum(a, b){ console.log(a + b) } ";
var program = js2c(jsString); // returns "void sum(int x, int y) { printf("%d ", x + y); }"
program.exec(); // Compile String as a C program and Execute Binary
```
### Methods
About js2c Methods:
#### Parse
Return parsed strings without modify/save in JS2C state
```js
var js2c = require("js2c");
js2c.parse("var i = 1"); // returns "int i = 1;"
```
#### Compile
Compile current program, however you can specify the path where compiled program will be stored.
```js
var js2c = require("js2c"),
program = js2c(jsCode);
var path = "./bin";
c.compile(path); // path is optional
```
#### Exec
Create binary file in memory and execute after it.
```js
var js2c = require("js2c"),
program = js2c(jsCode);
c.exec();
```
### Notes
IMPORTANT: **For while you have to define variable before use it.**
## Roadmap
- [ ] Variable declarations
- [x] string
- [x] interger
- [x] boolean
- [x] array
- [ ] object
- [ ] Functions declarations
- [ ] callbacks declarations
- [ ] closure cases
- [ ] Native Funcs/Methods (`console`, `import`, `while`, `for`, `Array.length`and much others...)
- [ ] Modules declarations (import cases)