Racket 如何在语法定义中使用多个省略号?
无论有多少Racket 如何在语法定义中使用多个省略号?,racket,Racket,无论有多少params,我都想调用syntax2。我得到的错误是第二个省略号放错了地方。但它遵循param,所以我不确定。我的逻辑是,由于第二组省略号,(syntax2 arg1 arg2…param)被重复,但是param被param2替换 谢谢。您如何区分应被视为arg2的内容与应被视为param的内容之间的区别?例如,在(syntax1 a b c d)中,b c d应该如何在arg2和param模式之间划分?我实际上考虑了这一点,并尝试在语法规则中使用一个随机词语法规则(for),然后在
param
s,我都想调用syntax2
。我得到的错误是第二个省略号放错了地方。但它遵循param,所以我不确定。我的逻辑是,由于第二组省略号,(syntax2 arg1 arg2…param)
被重复,但是param
被param2
替换
谢谢。您如何区分应被视为
arg2
的内容与应被视为param
的内容之间的区别?例如,在(syntax1 a b c d)
中,b c d
应该如何在arg2
和param
模式之间划分?我实际上考虑了这一点,并尝试在语法规则中使用一个随机词<代码>语法规则(for),然后在模式中我尝试了syntax2arg1arg2。。。对于param…
,但结果仍然相同。不确定这是否是一个全面的改进,无论它是否解决了问题。语法规则
不允许您这样做,但是语法解析
可能会。你想表达什么?你说“由于第二组省略号,(syntax2 arg1 arg2…param)
被重复了”,但我不确定这对你意味着什么,顺便说一句,如果你使用语法分析,你的想法确实有效,我将研究语法分析谢谢!您如何区分应被视为arg2
的内容与应被视为param
的内容之间的区别?例如,在(syntax1 a b c d)
中,b c d
应该如何在arg2
和param
模式之间划分?我实际上考虑了这一点,并尝试在语法规则中使用一个随机词<代码>语法规则(for)
,然后在模式中我尝试了syntax2arg1arg2。。。对于param…
,但结果仍然相同。不确定这是否是一个全面的改进,无论它是否解决了问题。语法规则
不允许您这样做,但是语法解析
可能会。你想表达什么?你说“由于第二组省略号,(syntax2 arg1 arg2…param)
被重复了”,但我不确定这对你意味着什么,顺便说一句,如果你使用语法分析,你的想法确实有效,我将研究语法分析谢谢!
(define-syntax syntax1
(syntax-rules ()
((syntax2 arg1 arg2 ... param ...)
(append
(syntax2 arg1 arg2 ... param)
...)
)
)
)
(define-syntax syntax2
(syntax-rules ()
((syntax2 arg1 arg2 ... param)
;Body just returns a list
)
)
)