Scirpus(Cirru -> ES6 AST) 底稿

編程語言的執行javascript

解釋執行 https://github.com/coffee-js/languages/wiki/簡化的解釋器入門和編程語言瞭解
Machine Code http://en.wikipedia.org/wiki/Compiled_languagehtml

中間語言java

JVM http://en.wikipedia.org/wiki/List_of_JVM_languages
CLI http://en.wikipedia.org/wiki/List_of_CLI_languages
Parrot http://trac.parrot.org/parrot/wiki/Languages
JavaScript https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-...
LLVM(我的收集) http://segmentfault.com/a/1190000002639770git


解釋執行github

代碼 -> 語法樹 -> 遍歷語法樹編程

lisp(define a 1)
(print a)
(define (f a)
  (set a (+ a 1)))
  (return a)
(print (f a))

解析成 JSON:json

[
  ["define", "a", "1"],
  ["print", "a"],
  ["define",
    ["f", "a"],
    ["set", "a", ["+", "a", "1"]],
    ["return", "a"]
  ],
  ["print", ["f", "a"]]
]

遞歸執行過程: eval(ast, env)segmentfault


編譯執行babel

相似解釋執行, 可是輸出結果是代碼
對比生成 HTML, 動態生成 DOM, 靜態編譯 js 模版編程語言

Assembly
JVM Bytecode
LLVM IR (Intermediate Representation) http://www.stephendiehl.com/llvm/#llvm-introduction
Parrot VM
JavaScript
C


Cirru

直接生成(編輯)語法樹, 沒有明確語法

Parser: https://github.com/Cirru/cirru-parser
Editor: https://github.com/Cirru/cirru-editor
Writer: http://github.com/Cirru/cirru-writer

https://github.com/Cirru/cirru-mustache
https://github.com/Cirru/cirru-html
https://github.com/Cirru/cirru-html-js
https://github.com/Cirru/cirru-json
https://github.com/Cirru/cirru-script


CirruScript

用 Cirru 語法生成 JavaScript

http://repo.cirru.org/script/index.html
https://github.com/Cirru/script-console

--- JavaScript as IR

Mozilla JavaScript AST

https://github.com/estree/estree/blob/master/spec.md
https://speakerdeck.com/constellation/escodegen-and-esmangle-using-moz...
http://esprima.org/demo/parse.html

CoffeeScript2 -> CoffeeScript AST -> JavaScript AST -> JavaScript


Scirpus: Cirru -> ES6

Cirru AST -> ES6 AST -> ES5 AST -> JavaScript

https://github.com/babel/babel

相關文章
相關標籤/搜索