Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7f95897

Browse files
Compiler v1
1 parent 8bb759b commit 7f95897

File tree

125 files changed

+10291
-45
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+10291
-45
lines changed

‎cli/index.js‎

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
#! /usr/bin/env node
2+
const program = require('commander');
3+
const fs = require('fs');
4+
const path = require('path');
5+
const {fork} = require('child_process');
6+
7+
const colors = require('colors');
8+
const ora = require('ora');
9+
10+
const defaultCompiler = '1.0.0';
11+
12+
function error(msg) {
13+
console.log(msg.red.bold);
14+
process.exit();
15+
}
16+
17+
function warn(msg) {
18+
console.log(msg.yellow.bold);
19+
}
20+
21+
function success(msg) {
22+
console.log(msg.green.bold);
23+
}
24+
25+
function info(msg) {
26+
console.log(msg.blue);
27+
}
28+
29+
program
30+
.version('1.0.0')
31+
.command('build <saurfile> <outfile> [compiler]')
32+
.action(function (file, outFile, compiler, cmd) {
33+
build(file, outFile, compiler);
34+
});
35+
program
36+
.command('run <saurfile> <outfile> [compiler]')
37+
.action(function (file, outFile, compiler, cmd) {
38+
build(file, outFile, compiler);
39+
info('Running: ' + outFile + '\nOutput:');
40+
fork(outFile);
41+
});
42+
program.parse(process.argv);
43+
44+
function build(file, outFile, compiler) {
45+
// Load the compiler:
46+
console.log(compiler);
47+
if (compiler == null) {
48+
compiler = defaultCompiler;
49+
}
50+
info('Locating compiler v' + compiler);
51+
let compilerPath = path.resolve(__dirname + '/../compile-' + compiler + '/');
52+
if (!fs.existsSync(compilerPath)) {
53+
error("Compiler v" + compiler + " is not installed or doesn't exist.");
54+
}
55+
const spinner = ora('Loading tokens|syntax-tree|transpile').start();
56+
spinner.color = 'blue';
57+
const Tokens = require('../compile-' + compiler + '/tokens');
58+
const SyntaxTree = require('../compile-' + compiler + '/syntax-tree');
59+
const Transpile = require('../compile-' + compiler + '/transpile');
60+
spinner.stop();
61+
success("Using compiler v" + compiler + " at " + compilerPath);
62+
63+
// Read the saurfile:
64+
spinner.text = 'Locating \'.saur\' file';
65+
spinner.start();
66+
if (!fs.existsSync(file)) {
67+
spinner.stop();
68+
error('\'.saur\' file \'' + file + '\' doesn\'t exist');
69+
}
70+
spinner.stop();
71+
success('Read ' + file);
72+
spinner.text = 'Reading ' + file;
73+
spinner.start();
74+
let code = fs.readFileSync(file, 'utf8');
75+
spinner.stop();
76+
success('Read ' + file);
77+
78+
// Create tokens:
79+
spinner.text = 'Creating tokens';
80+
spinner.start();
81+
let toks = new Tokens(code);
82+
spinner.stop();
83+
success('Done: tokens');
84+
85+
// Create tokens:
86+
spinner.text = 'Creating syntax tree';
87+
spinner.start();
88+
let tree = new SyntaxTree(toks);
89+
spinner.stop();
90+
success('Done: syntax tree');
91+
92+
// Transpile:
93+
spinner.text = 'Transpiling';
94+
spinner.start();
95+
let js = new Transpile(tree);
96+
spinner.stop();
97+
success('Generated JavaScript code');
98+
99+
// Save code:
100+
spinner.text = 'Saving code';
101+
spinner.start();
102+
fs.writeFileSync(outFile, js.js);
103+
spinner.stop();
104+
success('Code transpiled to ' + outFile);
105+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
@import "./document"
2+
@import "./storage"
23

34
@export @new Document document()
5+
@export @new Storage storage()

‎include/browser/document.saur‎ renamed to ‎compile-1.0.0/lib/browser/document.saur‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
@import './storage'
2-
31
@export @class Document
4-
@new Storage storage()
5-
62
fun elementById(String id) > Any {
73
return `document.getElementById(id)`
84
}
File renamed without changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
@import "./console"
2+
@import "./string"
23
@export @new Console logger()

‎compile-1.0.0/lib/common/array.saur‎

Whitespace-only changes.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /