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?

Werner
  • 603,163
Phil Lamb
  • 163

2 Answers2

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}

Peter Grill
  • 223,288
3

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.