列表语言定义关键字后缀

列表语言定义关键字后缀

我正在尝试为 ARM 汇编创建一个listings语言定义,并且许多指令都有前缀/后缀(即 BGT、BLE、BNE、BEQ 分支指令)。

有没有办法将 B 定义为关键字,并使用任何后缀?还是我必须在关键字列表中添加所有前缀/后缀/指令的组合?

答案1

您可以使用keywordsprefix=<prefix>来指定以 开头的任何内容都 <prefix>被视为关键字。下面的 MWE 用B蓝色突出显示以 开头的任何单词,但不改变其他文本:

在此处输入图片描述

然而您应该注意列表文档中的以下限制:

  1. 前缀始终区分大小写。

  2. 一次只能定义一个前缀。

  3. 如果在语言定义之外独立使用,则该键可能仅在选择非空语言后才起作用(并在必要时切换回空语言)。

  4. 该键不尊重其值classoffset并且没有可选的类参数。

\documentclass{article}
\usepackage{listings}%
\usepackage{xcolor}

\lstset{%
    backgroundcolor=\color{yellow!20},%
    basicstyle=\small\ttfamily,%
    numbers=left, numberstyle=\tiny, stepnumber=2, numbersep=5pt,%
    keywordstyle=\color{blue}\bfseries,
    language=Java,
    keywordsprefix=B,
    }%

\begin{document}
\begin{lstlisting}
    ABC BGT DEF
    BLE XYZ MWS
    BNE DNW QES
    ABN BEQ MWE
\end{lstlisting}
\end{document}

答案2

我也在寻找ARM 汇编程序我想到了一个办法,那就是建立所有关键词的(庞大的)列表。

结果(包括生成关键字的 Python 脚本)如下:github

相关内容