lstlisting - lstdefinelanguage - Nicht alles funktioniert

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Master1991
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: So 24. Jan 2016, 14:18

lstlisting - lstdefinelanguage - Nicht alles funktioniert

Beitrag von Master1991 »

Hi,

es geht um die definition einer neuen Sprache für lstlisting

hoffe mir kann fix wer helfen, ansich funktioniert es schon relativ, aber:
--> Ich würde gerne das die Ziffern im Quellcode eine andere Farbe bekommen. Numberstyle ändert nur die Ziffern am Rand.
-->Außerdem sollte das # Symbol dieselbe Farbe wie die Ziffern bekommen.
-->Obwohl es ein Kommentar ist werden : und := anderfarbig gehighlighted
-->Die beiden Punkte in der Array definition sollten ebenfalls blau sein
-->Runde Klammern ebenfalls blau, wenn ich diese integriere gehen meine mehrzeiligen Kommentare nicht mehr.
-->Achso und 16#AF ... dort sind A-F auch Ziffern sollten also ebenfalls ziffernfarbe bekommen. Aber nur hinter der Raute...ich will nicht jedes f farbig haben


Minimalbeispiel:
\documentclass[]{article}

\usepackage{xcolor}
\usepackage{listings}

\lstdefinelanguage{ST}
{
	% list of keywords
	morekeywords={
		case,of,if,then,end_if,end_case,super,function_block,extends,var,
		constant, byte,,end_var,var_input, real,bool,var_output,
		dint,udint,word,dword,array, of,uint,not,adr
	},
	otherkeywords={
		:, :=, <>,;,\,.,\[,\],\^
	},
	sensitive=false,
	morecomment=[l]{//}, 
	morecomment=[s]{(*}{*)},
	morestring=[b]"
	morestring=[b]'	
}

\lstset{
	language=ST,
	numbers=left,
	numberstyle=\color{purple},
	keywordstyle=\color{blue},
	commentstyle=\color{green},
	stringstyle=\color{yellow},
	tabsize=3
}

\begin{document}
	\begin{lstlisting}
	FUNCTION_BLOCK Name EXTENDS Name2
	VAR CONSTANT
		(*
		Mehrzeiliges Kommentar 
		*)
		variable	: BYTE := 2#11111110;
		//Auskommentierte variable
		//variable2 : REAL := 16#AF;
		array1: ARRAY[0..1] OF Name3;
		END_VAR
		
		CASE Variable OF
			0:	
			IF SUPER^.init() THEN
			variable := 1;
			END_IF
			1:	
			variable := 10;	
		END_CASE	
	\end{lstlisting}
\end{document}