【问题标题】:How to write .ctags file for assembly extention?如何为程序集扩展编写 .ctags 文件?
【发布时间】:2021-12-13 06:23:25
【问题描述】:

我正在使用 exuberant ctag 程序进行标记。
我看到了ctags use for Assembler,但无法完全理解那里的链接。因此,与我对系统 verilog 的扩展相比,我添加了这些行进行汇编,(我只需要解析 ENTRY 以进行宏定义),我在下面添加到 .ctags 文件。

--langdef=assembly
--langmap=assembly:.S
--regex-assembly=/^ENTRY(([a-zA-Z_0-9]+))$/\1/m,macro/

示例程序集文件(debug.S)是这样的:

ENTRY(printch)
        addruart_current r3, r1, r2
        mov r1, r0
        mov r0, #0
        b   1b
ENDPROC(printch)

但我在标签文件中找不到 printch。 .ctags 文件有什么问题?

【问题讨论】:

    标签: ctags exuberant-ctags


    【解决方案1】:

    您不必定义新语言。 ctags 有 Asm 解析器。 扩展解析器就足够了。 看看我如何使用反斜杠字符。

    $ cat /tmp/debug.S
    ENTRY(printch)
            addruart_current r3, r1, r2
            mov r1, r0
            mov r0, #0
            b   1b
    ENDPROC(printch)
    $ ctags --regex-Asm='/^ENTRY\(([a-zA-Z_0-9]+)\)$/\1/m,macro/'  -o - /tmp/debug.S
    printch /tmp/debug.S    /^ENTRY(printch)$/;"    m
    

    【讨论】:

    • 嗨,在我的 ubuntu 机器上,你的方法不起作用。 ckim@ckim-ubuntu:~/U-BOOT/u-boot$ cat /tmp/debug.S ENTRY(printch) addruart_current r3, r1, r2 mov r1, r0 mov r0, #0 b 1b ENDPROC(printch) ckim@ ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/^ENTRY\((a-zA-Z_0-9]+)\)$/\1/m,macro/' -o - /tmp/debug.S 只是没有输出。你的 ctags 版本是多少?我的是旺盛的 Ctags 5.9~svn20110310。
    • “Exuberant Ctags 5.8,版权所有 (C) 1996-2009 Darren Hiebert 编译时间:2021 年 1 月 26 日,00:00:00”。 [ 在您的命令行中丢失。
    • 啊,缺少[ 是问题所在。我在我的 .ctags 中添加了 --regex-Asm= 行并且它有效!谢谢!
    • 嗨,我问了一个与此类似的问题,你能读一下给我答案吗? stackoverflow.com/questions/70387740/…
    • YAMAO你好,你能看看我的问题并帮忙吗? stackoverflow.com/questions/71124536/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多