diff --git a/README.md b/README.md index 78d0b99..4145a47 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ * [__Trace Back Info__](#trace-back-info) * [__Debugger__](#debugger) * [__REPL__](#repl) +* [__Web Interface__](#web-interface) __Contact us if having great ideas to share!__ @@ -121,7 +122,7 @@ runtime.windows.set_utf8_output(); ![error](./doc/gif/error.gif) -
Must use `var` to define variables +
Must use `var` to define variables This interpreter uses more strict syntax to make sure it is easier for you to program and debug. And flightgear's nasal interpreter also has the same rule. @@ -146,13 +147,13 @@ If you forget to add the keyword `var`, you will get this: ```javascript code: undefined symbol "i" --> test.nas:1:9 - | + | 1 | foreach(i; [0, 1, 2, 3]) | ^ undefined symbol "i" code: undefined symbol "i" --> test.nas:2:11 - | + | 2 | print(i) | ^ undefined symbol "i" ``` @@ -441,5 +442,51 @@ Nasal REPL interpreter version 11.1 (Nov 1 2023 23:37:30) >>> use std.json; {stringify:func(..) {..},parse:func(..) {..}} ->>> +>>> ``` + +## __Web Interface__ + +A web-based interface is now available for trying out Nasal code directly in your browser. It includes both a code editor and an interactive REPL (WIP). + +### Web Code Editor +- Syntax highlighting using CodeMirror +- Error highlighting and formatting +- Example programs +- Execution time display option +- Configurable execution time limits +- Notice: The security of the online interpreter is not well tested, please use it with sandbox mechanism or other security measures. + +### Web REPL +- ** IMPORTANT: The time limit in REPL is not correctly implemented yet. Thus this REPL web binding is not considered finished. Do not use it in production before it's fixed. ** +- Interactive command-line style interface in browser +- Multi-line input support with proper prompts (`>>>` and `...`) +- Command history navigation +- Error handling with formatted error messages +- Example snippets for quick testing + +### Running the Web Interface + +1. Build the Nasal shared library: +```bash +cmake -DBUILD_SHARED_LIBS=ON . +make nasal-web +``` + +2. Set up and run the web application: + +For the code editor: +```bash +cd nasal-web-app +npm install +node server.js +``` +Visit `http://127.0.0.1:3000/` + +For the REPL: +```bash +cd nasal-web-app +npm install +node server_repl.js +``` +Visit `http://127.0.0.1:3001/repl.html` diff --git a/doc/README_zh.md b/doc/README_zh.md index e77f655..77c47c8 100644 --- a/doc/README_zh.md +++ b/doc/README_zh.md @@ -26,9 +26,8 @@ __如果有好的意见或建议,欢迎联系我们!__ -* __lhk101lhk101@qq.com__ (ValKmjolnir) - -* __sidi.liang@gmail.com__ (Sidi) +- __lhk101lhk101@qq.com__ (ValKmjolnir) +- __sidi.liang@gmail.com__ (Sidi) ## __简介__ @@ -428,3 +427,57 @@ Nasal REPL interpreter version 11.1 (Nov 1 2023 23:37:30) >>> ``` +## __Web 界面__ + +现已提供基于 Web 的库以及示例界面,您可以直接在浏览器中编写和运行 Nasal 代码。该界面包括代码编辑器和交互式 REPL(未完成)。 + +### __Web 代码编辑器__ + +- **语法高亮:** 使用 CodeMirror 提供增强的编码体验。 +- **错误高亮和格式化:** 清晰显示语法和运行时错误。 +- **示例程序:** 预加载的示例,帮助您快速上手。 +- **执行时间显示选项:** 可选择查看代码执行所需时间。 +- **可配置的执行时间限制:** 设置时间限制以防止代码长时间运行。 +- **提示:** 在线解释器的安全性尚未得到广泛测试,建议配合沙盒机制等安全措施使用。 + +### __Web REPL__ + +- **重要提示:** REPL 中的代码执行时间限制尚未正确实现。此 REPL 库目前不稳定,请勿在生产环境中使用。 +- **交互式命令行界面:** 在浏览器中体验熟悉的 REPL 环境。 +- **多行输入支持:** 使用 `>>>` 和 `...` 提示符无缝输入多行代码。 +- **命令历史导航:** 使用箭头键轻松浏览命令历史。 +- **格式化的错误处理:** 接收清晰且格式化的错误消息,助力调试。 +- **快速测试的示例代码片段:** 访问并运行示例代码片段,快速测试功能。 + +### __运行 Web 界面__ + +1. **构建 Nasal 共享库:** + + ```bash + cmake -DBUILD_SHARED_LIBS=ON . + make nasal-web + ``` + +2. **设置并运行 Web 应用:** + + **代码编辑器:** + + ```bash + cd nasal-web-app + npm install + node server.js + ``` + + 在浏览器中访问 `http://127.0.0.1:3000/` 以使用代码编辑器。 + + **REPL:** + + ```bash + cd nasal-web-app + npm install + node server_repl.js + ``` + + 在浏览器中访问 `http://127.0.0.1:3001/repl.html` 以使用 REPL 界面。 + +--- diff --git a/package.json b/package.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/package.json @@ -0,0 +1 @@ +{}