# ets_frontend - [ets_frontend ](#ets_frontend-) - [Introduction](#introduction) - [Directory Structure](#directory-structure) - [Build](#Build) - [Usage Guidelines](#usage-guidelines) - [Repositories Involved](#repositories-involved) ## Introduction ets_frontend is a front-end tool in the ARK Runtime Subsystem. Combined with the ace-ets2bundle component, it supports converting ETS files into ARK bytecode files. For more information, see: [ARK Runtime Subsystem](https://gitee.com/openharmony/docs/blob/master/en/readme/ARK-Runtime-Subsystem.md). **ets_frontend architecture** ![](/figures/en-us_image_ets_frontend_arch.png) ## Directory Structure ``` /arkcompiler/ets_frontend/ ├── test262 # scripts for configuration and running Test262 ├── testTs # system test cases ├── es2panda ├── aot # logical entry ├── binder # info binding ├── compiler # compiling logic ├── ir # Bytecode generation ├── lexer # lexical analysis ├── parser # syntax parsing, AST generation ├── scripts # script directory ├── test # test directory ├── typescript # typescript support └── util # tool directory ├── ts2panda ├── scripts # dependency scripts ├── src # source code directory ├── templates # ruby templates ├── tests # unit test cases ├── tools # tools provided by ts2abc └── ts2abc # ts2abc source code ``` ## Build ets_frontend uses the command line interaction mode and converts JS code into ARK bytecode files that can be run on an ARK runtime system. ets_frontend supports Windows, Linux, and macOS. Front-end tools, converting JS source code into ARK bytecode, can be built by specifying the `--build-target` with `ets_frontend_build` on Linux. ``` $ ./build.sh --product-name rk3568 --build-target ets_frontend_build ``` ### Usage Guidelines #### Usage For Es2panda #### convert JS to ARK bytecode via es2abc ``` $ cd out/rk3568/clang_x64/arkcompiler/ets_frontend/ $ ./es2abc [options] file.js ``` If no parameter is specified for **\[options\]**, an ARK binary file is generated by default.

Option

Description

Value Range

Default Value

--debug-info

Provides debug information.

-

-

--debugger-evaluate-expression

Evaluates base64 style expression in debugger

-

-

--dump-assembly

Outputs an assembly file.

-

-

--dump-ast

Prints the parsed AST(Abstract Syntax Tree)

-

-

--dump-debug-info

Prints debug Info

-

-

--dump-literal-buffer

Prints the content of literal buffer

-

-

--dump-size-stat

Displays statistics about bytecodes.

-

-

--extension

Specifies input file type

['js', 'ts', 'as']

-

--help

Displays help information.

-

-

--module

Compiles the code based on the ecmascript standard module.

-

-

--opt-level

Specifies the level for compilation optimization.

['0', '1', '2']

0

--output

Specifies the path of the output file.

-

-

--parse-only

Parse the input file only

-

-

--thread

Specifies the number of threads used to generate bytecode

0-Number of threads supported by your machine

0

For more information, please see: [ARK-Runtime-Usage-Guide](https://gitee.com/openharmony/arkcompiler_ets_runtime/blob/master/docs/README.md). ## Repositories Involved [arkcompiler\_runtime\_core](https://gitee.com/openharmony/arkcompiler_runtime_core) [arkcompiler\_ets\_runtime](https://gitee.com/openharmony/arkcompiler_ets_runtime) **[arkcompiler\_ets\_frontend](https://gitee.com/openharmony/arkcompiler_ets_frontend)**