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

主要参考 kujirahand/nadesiko3.

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

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

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

另: 运行"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. 插件(功能库)

    • plugin_browser.js: 浏览器相关功能封装成API, 如'言'是"window.alert"(对话弹窗)
    • plugin_node.js: Node.js常用功能封装, 如'開'是"readFileSync"(打开文件)
    • plugin_system.js: JavaScript本身常用API封装, 如"割余"是"a%b"(求余)
    • plugin_turtle.js: 类似LOGO语言的基于"抚子"语言的脚本语言. 演示在ゼロからはじめてみる日本語プログラミング「なでしこ」(3) タートルグラフィックスでお絵かきしよう(その1)
  4. 其他

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

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

2017-12-22 日语编程语言抚子-第三版实现初探相关推荐

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

    前文日语编程语言"抚子" - 第三版特色初探仅对语言的语法进行了初步了解. 之前的语言原型实现尝试(如编程语言试验之Antlr4+JavaScript实现"圈4" ...

  2. 2017-12-22 日语编程语言抚子-第三版实现初探 1

    前文日语编程语言"抚子" - 第三版特色初探仅对语言的语法进行了初步了解. 之前的语言原型实现尝试(如编程语言试验之Antlr4+JavaScript实现"圈4" ...

  3. 日语编程语言抚子 - 第三版特色初探

    它山之石可以攻玉. 学习其他的母语编程语言, 相信对中文编程语言的设计和实践有借鉴意义. 本人刚刚开始接触"抚子"语言, 从官方文档开始探索. 以下试图突出一些发现的特色和亮点, ...

  4. 2017-11-06 日语编程语言抚子 - 第三版特色初探

    它山之石可以攻玉. 学习其他的母语编程语言, 相信对中文编程语言的设计和实践有借鉴意义. 本人刚刚开始接触"抚子"语言, 从官方文档开始探索. 以下试图突出一些发现的特色和亮点, ...

  5. 2017-11-06 日语编程语言抚子 - 第三版特色初探 1

    它山之石可以攻玉. 学习其他的母语编程语言, 相信对中文编程语言的设计和实践有借鉴意义. 本人刚刚开始接触"抚子"语言, 从官方文档开始探索. 以下试图突出一些发现的特色和亮点, ...

  6. 【一周头条盘点】中国软件网(2017.12.18~2017.12.22)

    每一个企业级的人 都置顶了 中国软件网 中国软件网 为你带来最新鲜的行业干货 趋势洞察 IBM沈晓卫:担心人工智能对人类的威胁就像担心火星上车牌限号 IBM中国研究院院长沈晓卫认为,从纯粹的技术角度来 ...

  7. 编程语言排行榜没有html,TIOBE:2019年12月全球编程语言排行榜

    原标题:TIOBE:2019年12月全球编程语言排行榜 TIOBE 公布了 12 月的编程语言排行榜.上个月我们对排行榜排名前 10 的语言进行过简单的分析,虽然本月的前 10 依旧和上个月的保持一致 ...

  8. 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理

    2019独角兽企业重金招聘Python工程师标准>>> 12.21 php-fpm的pool 为了避免因多站点使用同一个pool时因一个站点故障导致pool出问题,进而影响使用同一个 ...

  9. 2017.12.20 静态网页小实战

    时间:2017.12.20 地点:武汉-学校 项目类型:静态网页-王者荣耀游戏相关网页 制作时间:差不多半个月 主页面html代码: <!doctype html> <html> ...

最新文章

  1. php连接基础方法怎么查询数据库,php基础之连接mysql数据库和查询数据
  2. 【UGV】小车一些图片
  3. 【Excel】一次性快速批量删除下面多余的空白行
  4. sonarqube7.8汉化教程:安装中文插件
  5. 多线程爬虫python_一个简单的多线程Python爬虫
  6. logrotate测试_使用 logrotate 对 apache/nginx 日志切割
  7. python json转dict(dict转json)
  8. MSSQL 读取本地文件数据
  9. html+css如何提升,用好这20个css技巧快速提升你的CSS技能
  10. Centos 下配置JAVA环境
  11. php获取文件夹下指定文件名_VBA和Python对对碰,获取文件名称(含子文件夹)
  12. # 18医工独家|学习方法分享·学游戏打英语
  13. 二分类变量相关性分析spss_SPSS-两变量相关性分析
  14. Python 日期格式总结
  15. ZooKeeper session has been expired
  16. Are We Evaluating Rigorously? Benchmarking Recommendation for Reproducible Evaluation and Fair Compa
  17. 旅行青蛙服务器维护时间,旅行青蛙小青蛙多久出门一次?要什么时候才会出门...
  18. java bitwise_Java Core.bitwise_and方法代码示例
  19. 逆分布函数法生成随机数(以指数分布和双指数分布为例)
  20. 【2022秋招】IC设计/FPGA开发秋招经历总结(2)——公司专题

热门文章

  1. Object.assign 是浅拷贝还是深拷贝?
  2. 【云计算学习教程】IaaS、PaaS和SaaS:云计算的三种服务模式(精讲)
  3. 国庆节我们用代码画个国旗
  4. 大学物理复习笔记——静电场中的导体和电介质
  5. windows本地安装K8S
  6. 欧盟砍伐森林法规和遵守情况 用Dimitra技术解决森林砍伐问题
  7. 机器人学回炉重造(2-4):运动学奇异位型分析
  8. 电脑无线共享手机wify上网
  9. DLX 项目总结(Deluxe processor)
  10. 3星|《三联生活周刊》2017年46期:故事书,才是正常儿童真正想读的书