20 Star 125 Fork 24

木兰编程语言 / mulan-rework

 / 详情

重现语法——支持 lambda 形参为空或者多个,以及指定参数类型

待办的
任务 拥有者
创建于  
2021-05-30 14:27

基于 前一任务的讨论,为 lambda 形参添加下面两个语法(参考逆向):

lambda_param : primary_expr
lambda_param : ( )

以及下列三个语法:

primary_expr : ( name : type_name )
primary_expr : ( name : type_name , param_list_not_empty )
primary_expr : ( name , param_list_not_empty )

请尽量对每个语法规则添加对应测试用例,比如为 primary_expr : ( name : type_name ),可在 匿名函数.ul中添加用例如:

print(list(filter((n:int) -> n>0, [1,-1])))

每次对代码的修改,请以“能够完成这条语法规则功能的最少代码”为目标,而非一次性将逆向的整段代码(如 primary_expr_)加到重现项目中。

为方便回顾代码,可以将每条语法规则和对应测试、文档修改置于一个 commit,整个 PR 可分为多个 commit。如对如何拆分拿不准,欢迎在提第一个 commit 时就与我确认。

为避免任务范围扩大,如非必要,请避免引入其他代码(如 convert_to_tuple)。

其他要求与 首个悬赏任务 的相同。

评论 (6)

吴烜 创建了任务
吴烜 修改了描述
展开全部操作日志

@吴烜 我晚上测试一下

384016 zhishi 1578922186 吴烜 拥有者
回复 fcfco 成员

不急,请以测试覆盖为要。在下愚钝,只能借这种办法尽量保证重现木兰原貌了。

fcfco 成员
回复 吴烜 拥有者

先写了一个提交,再之后再做 lambda 形参
你先看看首要表达式用于赋值用的添加的这些代码,如果有什么问题一起讨论一下
@吴烜

还一个未提到的

lambda_param : varargs_expr

这玩意是什么,没太看懂
@吴烜
另外暂时没想出来其他的测试用例

!34:lambda 形参添加语法 达成目标,已合并,再次合作顺利~

期间发现个 设计细节 不大理解用意,待今后揣摩:

好奇为啥第一个形参不支持默认值,一时想不到如此设计的理由。

另外,希望以后的提交粒度小些,如顶楼提到的:

每次对代码的修改,请以“能够完成这条语法规则功能的最少代码”为目标

是的,到现在我真正注意到

为方便回顾代码,可以将每条语法规则和对应测试、文档修改置于一个 commit,整个 PR 可分为多个 commit。如对如何拆分拿不准,欢迎在提第一个 commit 时就与我确认。

吴烜 添加了
 
悬赏
标签

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
384016 zhishi 1578922186 10363337 cndp 1642855158
Python
1
https://gitee.com/MulanRevive/mulan-rework.git
git@gitee.com:MulanRevive/mulan-rework.git
MulanRevive
mulan-rework
mulan-rework

搜索帮助