Я предложу это как решение, хотя я не гарантирую, что оно не содержит ошибки цитирования.
define(`UL',`<ul>IT($@)<\ul>')dnl
define(`LI',`ifelse(`$1',`', `', `<li>`$1'<\li>')')dnl
define(`IT',`ifelse(`$#', `0',, `$#', `1',`LI(`$1')',
`LI(`$1')IT(shift($@))')')dnl
dnl
UL(foo,bar,baz)
UL(`UL',`LI',`IT')
UL(``UL'',``LI'',``IT'')
Для потомков, вот мое оригинальное решение, которое, безусловно, содержит ошибку цитирования:
define(`UL',`<ul>IT($@)<\ul>')dnl
define(`LI',`ifelse(`$1',`', `', `<li>$1<\li>')')dnl
define(`IT',`ifelse(`$#', `0',, `$#', `1',`LI(`$1')',
`LI(`$1')IT(shift($*))')')dnl
dnl
UL(foo,bar,baz)
UL(`UL',`LI',`IT')
UL(``UL'',``LI'',``IT'')
В первом решении окончательный вызов UL
не совсем то, что я ожидаю, но я настолько не уверен в правилах цитирования m4, что действительно не знаю, чего ожидать, поэтому я подозреваю, что есть ошибка цитирования. Помощь приветствуется.
person
William Pursell
schedule
06.06.2013