备份:https://zhuanlan.zhihu.com/p/46030123
代码地址:github:pyzh/gdpl-ex.poc-1
原语句是:List1为‘12332234‘;记a为List1,b为2;求a中b的个数
整个流程是这样的:
首先断句,然后判断句属性(这个步骤其实代码里没有严格实现)
第一句里面因为只有一个[为]字,所以可以认为第一句是个赋值语句;
而第二句有一个[记]字,这个在[Ld2]的设定里面,要比[为]的优先级高,所以第二句实际上是[记+为]的定义语句;
第三句是[求]语句,根据前文进行计算(这里假定[求:个数]是标准库里的一员)
关于[为]和[记为]的差别,在设定里,[为]只能指定值,而[记为]既可以指向值,也可以指向参量(如a→List1)
第三句里的[中],决定了a和b的层级顺序。关于[的]字的处理,目前Ld2还没有明确规范。
缘起:APL和ABC里的count primitive
图2:流畅的python》python的直系祖先/ABC的count语法
参考:
- Ld2/初稿:一种基于中文的类SQL的DSL设计思路 · program-in-chinese/overview #89
- 纪念《APL》出版50年
- ABC 快速参考:https://homepages.cwi.nl/~steven/abc/qr.html
原文地址:https://www.cnblogs.com/pyzh/p/elixir-zh-calc.html
时间: 2024-11-05 15:54:59