日语编程语言"抚子"-第三版实现初探

简介: 对第三版"抚子"语言的源代码进行初步学习. Study the source code of the 3rd version of Japanese programming language Nadesiko.

前文《日语编程语言"抚子" - 第三版特色初探》仅对语言的语法进行了初步了解. 之前的语言原型实现尝试(如《编程语言试验之Antlr4+JavaScript实现"圈4"》)之后, 感觉有必要学习"抚子"的实现, 因为它也內建支持在线编程, 应该很有借鉴价值.
开发环境配置

主要参考 kujirahand/nadesiko3.

运行"npm start"后访问"localhost:3000"就有如下开发环境界面:
2017_12_22_Nadesiko3_

它也支持生成基于Electron的可以本地运行的独立程序(在Mac下测试). 运行"npm run electron"后就看到与网络界面相同的程序界面. 感觉这个方式很合理. 之后希望尝试类似途径同时实现在线和本地开发环境.

它也提供一个Atom插件, 安装后(拷贝目录到~/.atom/packages下)在Atom中打开test.nako3测试文件就有语法高亮:
2017_12_22_Nadesiko3_Atom_

另: 运行"npm run test"时, 发现了一个关于时间处理的bug. 将继续跟进; 暂时没有发现断点调试等功能.

源码学习

在/src下, 源码文件不多, 分类如下, 连同基于源码和注释个人整理的简单介绍:

  1. 编译器主程序:

    • nako3.js
    • cnako.js: 支持命令行下运行
    • enoko.js: 支持electron
    • wnako3.js: 支持web browser-浏览器
  2. 分析器实现

    • nako_prepare.js: 全半角字符处理; 特殊字符串处理, 比如{% raw %}{{{{{% endraw %}等
    • nako_lexer.js: 对已经是全角的代码进行词法分析, 包括保留关键字, 分词器等等
    • nako_parser_base.js: 显示语法错误, NakoParserBase类
    • nako_parser_const.js: 定义运算符的优先级, 以及日语助词(?), 如'いて', 'えて'等等
    • nako_parser3.js: 是NakoParserBase的扩展, 实施语法分析, 生成语法树
    • nako_gen.js: 从语法树生成JS类
  3. 插件(功能库)

  4. 其他

    • index.js: 用npm模块方式使用"抚子"
    • repl.nako3: 用"抚子"语言本身写的一个简单的对话执行环境

时间有限, 以后再对不同模块深入学习.

2017-12-22

相关文章
|
9月前
|
自然语言处理
古老的神秘语言
机器语言是一种计算机可直接执行的低级语言,它由二进制代码表示,使用特定的指令集来控制计算机硬件的操作。在计算机系统中,所有的数据以二进制形式表示,并通过机器语言指令进行处理和操作。机器语言通常是与硬件平台紧密相关的,因为不同的计算机体系结构可能具有不同的指令集和编程规范。
|
JavaScript 前端开发 Java
D 语言之父谈 D 语言的诞生
将Walter Bright带往写一门语言、现在排在前20名的道路是从好奇开始的——也有侮辱。
302 0
D 语言之父谈 D 语言的诞生
|
自然语言处理 JavaScript
日语编程语言"抚子" - 第三版特色初探
对最新版的"抚子"语言进行各方面学习, 此文从功能和特性开始. Study the unique features and designs from the Japanese programming language Nadesiko.
1128 0
|
算法 人工智能 开发工具
中文编程语言之Z语言初尝试 - ZLOGO 4
学习ZLOGO官方教程,记录过程中的发现. Follow the official tutorial of ZLOGO programming language, and share the findings during the way.
893 0
|
JavaScript 前端开发
JavaScript 编程精解 中文第三版 翻译完成
JavaScript 编程精解 中文第三版 原书:Eloquent JavaScript 3rd edition 译者:飞龙 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 在线阅读...
1684 0
|
前端开发 JavaScript 编译器
JavaScript 编程精解 中文第三版 十二、项目:编程语言
十二、项目:编程语言 原文:Project: A Programming Language 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 确定编程语言中的表达式含义的求值器只是另一个程序。
1217 0
|
存储 移动开发 JavaScript
JavaScript 编程精解 中文第三版 九、正则表达式
九、正则表达式 原文:Regular Expressions 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 一些人遇到问题时会认为,“我知道了,我会用正则表达式。
1323 0
|
JavaScript 前端开发 机器人
JavaScript 编程精解 中文第三版 七、项目:机器人
七、项目:机器人 原文:Project: A Robot 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 […] 置疑计算机能不能思考 […] 就相当于置疑潜艇能不能游泳。
1105 0
|
JavaScript 前端开发 程序员
JavaScript 编程精解 中文第三版 二、程序结构
二、程序结构 原文:Program Structure 译者:飞龙 协议:CC BY-NC-SA 4.
1533 0