0
我正在使用m4
預處理器,命令行選項--synclines
。該選項在每個擴展多行之後發出#line <nn>
行。如何更改m4的--synclines選項的註釋符號?
實施例:
; sr0(<register>, <count>) unrolls the sr0 statement for <register> <count> times.
sr0(reg_0, 3)
sr1 reg_1
結果:
#line 1 "test.psm"
; sr0(<register>, <count>) unrolls the sr0 statement for <register> <count> times.
sr0 reg_0
#line 2
sr0 reg_0
#line 2
sr0 reg_0
#line 2
sr1 reg_1
由於SR0(reg_0,3)起源於第2行,M4每個擴展之後添加#line 2
。
如何將註釋符號#
更改爲;
?,因爲彙編程序不支持#
作爲註釋符號。
我想獲得一個唯一的M4的解決方案。使用sed或其他工具運行第二個處理步驟是可能的,但這不是希望的解決方案,因爲它涉及第二個工具,臨時文件或標準輸入/標準輸出流水線。 – Paebbels
只有'm4'才能用''line'替換'#line',但是這需要a)使用'changeword'來允許使用包含'#'的宏他們的名字(這是實驗性的,所以並不總是可用的,如果可用的話它可能會發生變化),以及b)它需要將來自'm4'的輸出輸送到'm4'的第二個實例來改變'#line '到'; line'(涉及使用流水線,你想避免)。 – Simon
我沒有辦法改變使用'm4'的命令行參數的向列輸出,但是鑑於'm4'是自由軟件,你可以修改源代碼並重新編譯一個自定義版本的'm4'輸出'; line '而不是'#line'作爲向列。除非使用流水線在您的上下文中根本不可能,否則我不會推薦這種方法,而是建議使用流水線。 – Simon