linuxusr
31-10-2010, 23:09
Hallo,
ich habe ein Problem mit dem listings Paket:
Ich habe einen Sprache definiert und hinzugefuegt (siehe unten). Ich habe die namen der Register als keywords hinzugefuegt. Ich moechte verschiedene Farben fuer z.B. Anweisungen und Register verwenden, was eig. auch geht.
Wenn ich das Dokument setze, werden alle Farben korrekt gesetzt, bis auf "r16" und "r17". Fuege ich ein Leerzeichen vor diesen Registernamen ein, dann werden auch diese richtig angezeigt. Ich denke somit, dass es an dem Komma liegt, dass ohne zusaetzliches Leerzeichen zum keyword hinzugezaehlt wird und dieses somit nicht mehr als solches erkannt wird.
Weiss jemand es eine Moeglichkeit das Problem zu beheben?
Schonmal vielen Dank!
hier noch meine Sprachdefinition:
\usepackage{listings}
\lstdefinelanguage[AVR]{Assembler}%
{morekeywords={%
% Arithmetic and Logic Instructions
add,adc,adiw,sub,subi,sbc,sbci,sbiw,and,andi,or,or i,eor,
com,neg,sbr,cbr,inc,dec,tst,clr,ser,mul,muls,mulsu ,fmul,
fmulsu,des,%
% Branch Instructions
rjmp,ijmp,eijmp,jmp,rcall,icall,eicall,call,ret,re ti,cpse,
cp,cpc,cpi,sbrc,sbrs,sbic,sbis,brbs,brbc,breq,brne ,brcs,
brcc,brsh,brlo,brmi,brpl,brge,brlt,brhs,brhc,brts, brtc,
brvs,brvc,brie,brid,%
% Data Transfer Instructions
mov,movw,ldi,lds,ld,ldd,sts,st,std,lpm,elpm,spm,in ,out,
push,pop,xch,las,lac,lat,lsl,lsr,rol,ror,asr,swap, bset,
bclr,sbi,cbi,bst,bld,sec,clc,sen,cln,sez,clz,sei,c li,
ses,cls,sev,clv,set,clt,seh,clh,%
% MCU Control Instructions
break,nop,sleep,wdr},%
morekeywords=[2]{%
% AVR Assembler Directives
.byte,.cseg,.db,.def,.device,.dseg,.dw,.endm,.endm acro,%
.equ,.eseg,.exit,.include,.list,.listmac,.macro,.n olist,%
.org,.set},%
alsoletter={.,0,1,2,3,4,5,6,7,8,9},%
alsodigit={x,X,b,B,\$},%
morekeywords=[3]{%
% AVR General Purpose Registers
r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14, %
r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r2 7,%
r28,r29,r30,r31},%
sensitive=f,%
morestring=[b]",%
morestring=[b]',%
morecomment=[l];%
}[keywords,comments,strings]
\lstloadlanguages{[AVR]Assembler}
\lstset{%
language=[AVR]Assembler,%
frame=single,%
breaklines=true,%
basicstyle=\ttfamily,%
commentstyle=\itshape\color{avrcom},%
stringstyle=\color{avrstr},%
keywordstyle=[1]\bfseries\color{avrcmd},%
keywordstyle=[2]\bfseries\color{avrascmd},%
keywordstyle=[3]\color{avrreg}%
}
EDIT: und das ist das Beispiel, was ich setzen moechte:
\begin{lstlisting}
; void x(int myvar0, char* b) {}
; 16-bit addition
.include "HelloWorld.asm"
add r16, r0
adc r17, r1
\end{lstlisting}
ich habe ein Problem mit dem listings Paket:
Ich habe einen Sprache definiert und hinzugefuegt (siehe unten). Ich habe die namen der Register als keywords hinzugefuegt. Ich moechte verschiedene Farben fuer z.B. Anweisungen und Register verwenden, was eig. auch geht.
Wenn ich das Dokument setze, werden alle Farben korrekt gesetzt, bis auf "r16" und "r17". Fuege ich ein Leerzeichen vor diesen Registernamen ein, dann werden auch diese richtig angezeigt. Ich denke somit, dass es an dem Komma liegt, dass ohne zusaetzliches Leerzeichen zum keyword hinzugezaehlt wird und dieses somit nicht mehr als solches erkannt wird.
Weiss jemand es eine Moeglichkeit das Problem zu beheben?
Schonmal vielen Dank!
hier noch meine Sprachdefinition:
\usepackage{listings}
\lstdefinelanguage[AVR]{Assembler}%
{morekeywords={%
% Arithmetic and Logic Instructions
add,adc,adiw,sub,subi,sbc,sbci,sbiw,and,andi,or,or i,eor,
com,neg,sbr,cbr,inc,dec,tst,clr,ser,mul,muls,mulsu ,fmul,
fmulsu,des,%
% Branch Instructions
rjmp,ijmp,eijmp,jmp,rcall,icall,eicall,call,ret,re ti,cpse,
cp,cpc,cpi,sbrc,sbrs,sbic,sbis,brbs,brbc,breq,brne ,brcs,
brcc,brsh,brlo,brmi,brpl,brge,brlt,brhs,brhc,brts, brtc,
brvs,brvc,brie,brid,%
% Data Transfer Instructions
mov,movw,ldi,lds,ld,ldd,sts,st,std,lpm,elpm,spm,in ,out,
push,pop,xch,las,lac,lat,lsl,lsr,rol,ror,asr,swap, bset,
bclr,sbi,cbi,bst,bld,sec,clc,sen,cln,sez,clz,sei,c li,
ses,cls,sev,clv,set,clt,seh,clh,%
% MCU Control Instructions
break,nop,sleep,wdr},%
morekeywords=[2]{%
% AVR Assembler Directives
.byte,.cseg,.db,.def,.device,.dseg,.dw,.endm,.endm acro,%
.equ,.eseg,.exit,.include,.list,.listmac,.macro,.n olist,%
.org,.set},%
alsoletter={.,0,1,2,3,4,5,6,7,8,9},%
alsodigit={x,X,b,B,\$},%
morekeywords=[3]{%
% AVR General Purpose Registers
r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14, %
r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r2 7,%
r28,r29,r30,r31},%
sensitive=f,%
morestring=[b]",%
morestring=[b]',%
morecomment=[l];%
}[keywords,comments,strings]
\lstloadlanguages{[AVR]Assembler}
\lstset{%
language=[AVR]Assembler,%
frame=single,%
breaklines=true,%
basicstyle=\ttfamily,%
commentstyle=\itshape\color{avrcom},%
stringstyle=\color{avrstr},%
keywordstyle=[1]\bfseries\color{avrcmd},%
keywordstyle=[2]\bfseries\color{avrascmd},%
keywordstyle=[3]\color{avrreg}%
}
EDIT: und das ist das Beispiel, was ich setzen moechte:
\begin{lstlisting}
; void x(int myvar0, char* b) {}
; 16-bit addition
.include "HelloWorld.asm"
add r16, r0
adc r17, r1
\end{lstlisting}