Skip to content
This repository has been archived by the owner on Aug 23, 2024. It is now read-only.
/ es Public archive

A JavaScript interpreter from scratch, supporting ES5 syntax.

License

Notifications You must be signed in to change notification settings

zhuzilin/es

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

es

A JavaScript interpreter from scratch, supporting ES5 syntax.

Compile and Run

Clone and compile:

$ git clone [email protected]:zhuzilin/es.git
$ cd es
$ mkdir bin
$ g++ es.cc -std=c++17 -I$(PWD) -O3 -Wall -Wextra -Wno-unused-parameter -Wno-deprecated-declarations -o bin/es

Run:

$ echo "console.log('hello world!')" > hello_world.js
$ bin/es hello_world.js 
"hello world!"

Test

Use test/*.cc:

cmake -S . -B build
cmake --build build
cd build && ctest; cd ..

Run the quickjs test:

sh quickjs-test.sh 

The quickjs tests pass if there is no output.

Perf test

Compile with:

g++ es.cc -std=c++17 -I$(PWD) -Wall -Wno-deprecated-declarations -Wextra -Wno-unused-parameter -o bin/es -O3 -DPERF -lprofiler

And run with:

CPUPROFILE_FREQUENCY=4000 bin/es xxx.js

Acknowledgement

I've learned a lot from Constellation/iv, V8 and thanks a lot for Annotated ECMAScript 5.1.

About

A JavaScript interpreter from scratch, supporting ES5 syntax.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages