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

一些背景资料: 官方网站

  • 第三版(最新)源码库, 用JavaScript实现, 代码提交从2017/2至今
  • 第二版源码库, 用C#实现. 代码提交从2010/6到2016/2.
  • 第一版源码库, 用Pascal实现, 最近仍然在更新. 最早代码提交是2008年, 但应该在更早几年前就已经成型.

下面的示例代码源自第三版语法文档. 限于日语水平, 对它的示例源码也许有理解出入. 为方便理解, 已把它们转成对应的中文, 词序有不少调整. 如发现大的出入, 非常欢迎到主题帖批评指正.

接近日语自然语言的语法

比如它允许多种方式赋值:

价格是3000    #  原代码: 値段は3000
价格=2000
置价格为4000   # 値段に4000を代入。

很明显它支持是无空格语法, 也同时支持传统(=)赋值和接近自然语言的赋值方式. 这个风格贯穿所有语法.
又如条件语句:

A = 4
如果A不是5显示为「OK」
如果不是显示为「NG」
直到这里。

暂时不确定空格缩进是否像Python那样必须, 还是仅为了代码可读性.

特别的'它'

加5到30,并乘以2来显示它。
加5到30。 它乘以两倍。 显示它。

的使用, 是一个特色. 个人感觉是内置的匿名变量, 并且在函数没有实参时默认使用. 这是很接近自然语言的指代用法! 例如:

它是“  abc   ”   <--- 后面几行都省略了'它'
空白删除。
大写转换
用“*”替换“A”
显示。

在函数中可以用, 作为返回的默认值:

●(A和B的)加法是它是A + B返回
直到这里

上例中即使没有返回"它", 函数返回值仍然是的值

也会随着函数执行而更新, 如下示例, 函数体中没有, 但仍然显示50

●(A和B的)加法是B添加到A
直到这里
30和7的加法. 显示它.

精简的循环

'回数'是个保留变量, 可以获得当前循环次数的序号:

N=3
(N)次显示「这是第{回数}次」。
直到这里。

也可以遍历:

重复[1,2,3], 这里开始显示对象。
直到这里。

上面的对象应该是类似回数的内置变量, 用以返回当前循环对应的值. (推测上面如果是显示{回数}的话, 应该显示0 1 2)
上面也可以用显示它

对象按照键遍历:

OBJ = {“Jan”:1,“Feb”:2,“Mar”:3,“Apr”:4}
重复OBJ显示「{对象键} = {对象}月份」
直到这里。

这里也可以看到它支持JSON数据结构.

显式声明变量/常量

可带初始化的声明:

A是变量=30
B是常量=50

也可以简写:

变量A=30
常量B=50

函数

支持递归和匿名函数, 后者还未来得及细究(官方文档在此)

允许内嵌JavaScript

这是个非常重要的功能, 虽然没有深入, 但个人理解是类似于Scala调用Java库的功能, 因而"抚子"语言可以用于所有JavaScript可用的领域(包括前后端). 因为此版是在NPM发布的, 猜测JavaScript也可以调用抚子语言的模块. 在缺乏自身的核心标准库时, 个人感觉新语言依托现有成熟语言的核心库以及丰富的第三方库对推广来说至关重要.

JavaScript回调事件参数 <--- 此处不甚理解

参数这一内置变量可以以数组形式获取event参数的值。

●(A和B的)加法是它=参数[0] + 参数[1]
直到这里
显示3和5的加法。

对移动设备和输入法的特别优化

一个很有特色的功能是, 为了简便地访问数组/对象. 因为智能手机很难输入A[n](猜想因为[]是在"符号"部分), 因此允许A@n. 这是第一次看到为了移动设备而设计的功能.

其他

字符串展开

感觉类似于Scala的功能(string interpolation). 复杂的字符串可以用{% raw %}S{{{...}}}{% endraw %}(三对以上的大括号)表示:
{% raw %}

得分是35。 评价是「A」。
成绩报告是S{{{成績表
·他的分数是{得分}。
·评价是{评价}。}}}
显示成绩报告。

{% endraw %}
返回:

成績表
・他的分数是35。
・评价是A。

2017-11-06 日语编程语言抚子 - 第三版特色初探相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 【274天】每日项目总结系列012(2017.11.06)

    叨叨两句 ~ 重置Root密码 方法一: 在my.ini的[mysqld]字段加入: skip-grant-tables 重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysq ...

  7. 2017.11.06 ~ 11.10 NOIP八连测滚粗记

    前言: 苟过了初赛,由于我太垃圾所以最后一星期来一天两场比赛滚粗一把. 我的血还是热的,她还在汩汩流动着. 如果血还没有冷下来的话,就把她尽数浇灌在废墟中,坚信着能迸发出绝美的花儿来. Day1 早场 ...

  8. 2017年06月07号课堂笔记

    2017年06月07号 晴 空气质量:中度污染->良 内容:jQuery第二节:基本选择器,层次选择器,属性选择器, 基本过滤选择器,可见性过滤选择器 备注:代课老师:李老师 一.基本选择器 1 ...

  9. 日常总结2017/11/4

    .LOG /********************************************************************************************** ...

最新文章

  1. 连接centos7桌面方法
  2. 小白如何用免费GPU跑天池算法大赛!
  3. Android 防止快速点击
  4. iOS - 在UITextField外部触摸时关闭键盘
  5. JavaScript MVC之Jamal
  6. hadoop学习3 查找块的位置
  7. Redis的key和value大小限制
  8. CSDN编程挑战——《进制转换》
  9. Andorid 系统性能优化---(22)Android性能相关常用命令收集
  10. IDC:IoT市场即将井喷的5大标志
  11. ngingx安装错误 ./configure: error: the HTTP rewrite module requires the PCRE library.
  12. vm9.02的序列号
  13. 程序员应该知道的Mac工具
  14. ubuntu18.04安装monaco字体
  15. JVM 知识体系总结
  16. linux查询文件重复记录,Linux 查询文件内容重复数 uniq
  17. 拔丝芋头的Java学习日记---Day11
  18. ubuntu16.04安装Preempt RT实时内核
  19. 对nand flash设备进行升级
  20. HTML5 语音搜索

热门文章

  1. 福州大学2019计算机考研分数线,福州大学2019年考研复试分数线
  2. 门神 马丁内斯 要什么样的成就,才不枉这些年的颠沛流离
  3. BugPhobia启程篇章:需求分析与功能定位
  4. 北京钢铁学校计算机99,北京唯一衰退的本科大学,以前100%分配国企,现沦为高职院校...
  5. 数据分析-描述数据方法
  6. 学C/C++想提升功底 可以花点时间看看这篇博客---C语言程序环境和预处理
  7. 100V降压电源芯片 电瓶72V降压DC-DC芯片
  8. 分析快、易操作的数据分析工具推荐
  9. 谈谈JAVA程序的反编译
  10. MySQL 下载和安装详解