-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
语法规则错误:在一个标识符出现后所有跟随表达式成为 CallEasy 参数 #4
Comments
|
不是,上次这种情况是 CallEasy 规则什么的错了,想办法解决 ( 不能匹配上 Call 的问题 |
目前的修复会导致问题
也是因为 duangsuse 还没来得及彻底分析和理解 PEG 的问题 System.err.println a() b c # 正常解析
System.out.a(1, b(1), [a + 2 + 2], 2) # OK
System.out.a 1, b(1), [a + 2 + 2], 2 # error! 欢迎理解这方面姿势的 dalao 来帮助彻底解决此问题 在这之前此 bug 会被当作 feature:让用户认为开发者是有强迫症的 因为 duangsuse 允许你完全使用 C 风格的调用和 Bash 风格的调用 System.out.a 1, b(1), [a + 2 + 2], 2
System.out.a 1 b(1) [a + 2 + 2, 1] 2
# 之前有过一个可以正常解析如下的修改我忘记了,算(貌似)
System.out.a 1, b 1, [a + 2 + 2, 1] 2 duangsuse 在被别人识破其实对解析器算法和规则之间的关系 |
☝️ 其实这不是唯一一个我还不满意的问题, |
这个修改只是把一个一定要加上 , 要不然错了都不提醒的改成的一定要是整个 callEasy 里的都是使用空格切分或逗号切分的 |
对于日常使用不会有什么影响,因为只有 callEasy 里有至少一个 identifier 的时候才会出现,而且前提是 |
!!! 这个修复有 bug !!! 会导致 callEasy 其实完全不能用,我还是在这里等 dalao 或者我有水平处理这个问题吧 |
(duangsuse: 如果一但参数有 identifier 就会有 bug, 你们还是乖乖使用 C 风格的调用吧...) |
(好吧,其实我现在才知道, Ruby 她也不支持这种清奇的语法) 因此我决定规定 Lite 的 callEasy 只允许使用 1 个参数(允许添加不会出 bug 的 block)或者使用逗号分割参数列表
🌚 |
目前发现了规则有一个问题:
CallEasy 会把之后所有的 expression 都当成参数:
目前认为原来正确的设计是 getb() 使用了 () 来限制参数的范围,所以不会有问题
但是实际上 a() 被当成了 Call,不过这个没什么的
The text was updated successfully, but these errors were encountered: