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
     )
    )
  )