2017-11-07 2 views
0

프로그램 파일 (사실 어셈블러)을 m4로 처리합니다. 난 그냥 을 억제 이제 내가 원하는m4를 사용하여 각 줄에 접두사를 추가하는 방법

changequote({,})dnl 
define({_SUPPRESSED},)dnl 
_SUPPRESSED({ 
jan 
piet 
}) 

를 사용하여 라인을 억제 어셈블러 주석 대신에 라인을 변경 할 수 있습니다

; jan 
; piet 

은 M4 예와 그 가능 patsubst 사용 하시겠습니까? 어떻게 할 수 있습니까?

참고 : 많은 실험에도 불구하고 나는 관리하지 않았습니다. 예 : 다음은 실패합니다.

define({pie}, {patsubst($1,{\n},{\n;})}) 

답변

1
define(`pie',`patsubst(`$1',`^.*$',`; &')') 
pie(`jan 
piet') 

주 (pie의 정의) patsubst 주변의 문자열 구분 기호! 그것 없이는 m4patsubst을 (읽지 않을 때) pie의 정의로 확장합니다. 분리자를 사용하면 pie 매크로를 호출 할 때만 문자열이되고 확장됩니다.

물론 문자열 구분 기호로 {}을 사용할 수 있습니다.

+1

작동하지만 모든 행을 "; &"로 바꿉니다. 내 원래의 경우 "\ n"을 "^"로 바꾸면 의도 한대로 모든 줄이 주석으로 바뀝니다. $ 1 주변의 따옴표도 중요합니다. 그렇지 않으면 주석 행에 쉼표 ","를 포함 할 수 없습니다. –

+0

예, "^"의 대체는 더 간단합니다. :) – uzsolt

관련 문제