6

I'm trying to create a listings language definition for ARM assembly and many of the instructions have prefixes/suffixes (i.e. BGT, BLE, BNE, BEQ branch instructions).

Is there a way to define B with any suffix as a keyword? Or am I stuck adding every combination of prefix/suffix/instruction in my list of keywords?

9

You can use the keywordsprefix=<prefix> to specify that anything beginning with the <prefix> is considered a a keyword. The MWE below highlights any word beginning with B in blue, but leaves other text alone:

enter image description here

However you should note the following limitations form the listings documentation:

  1. The prefix is always case sensitive.

  2. Only one prefix can be defined at a time.

  3. If used standalone outside a language definition, the key might work only after selecting a nonempty language (and switching back to the empty language if necessary).

  4. The key does not respect the value of classoffset and has no optional class argument.

\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}
1

I was also looking for a language definition for the ARM assembler and I came up with building the (huge) list of all keywords.

The result, including the python script to generate the keywords is on github.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.