Latex listing Highlight für AWL

Für eine Dokumentation brauchte ich Syntax Highlight für AWL — eine der Programmiersprachen mit welcher man STEP 7 Systeme von Siemens programmieren kann — für Latex listings. Da ich dazu nichts existierendes gefunden habe und das definieren von eigenen Sprachen für das listing Packet ziemlich einfach ist habe ich das dann einfach selbst gemacht.

Die Definition kennt sowohl die Englischen als auch die Deutschen AWL/STL Keywords sowie einfache Kommentare und Strings. Leider ist AWL durch die veränderte Bedeutung von Worten je nach Position im Code nicht so leicht in das lstdefinelanguage Schema zu pressen. Es kann also passieren das Bezeichner, Parameter usw. als Keywords erkannt werden. Hier der Latex code:
lstdefinelanguage{AWL}
{
morekeywords = {), )MCR, *D, *I, *R, +, +AR1, +AR2, +D, +I, +R, -D, -I, -R, /D, /I, /R,=, ==D, <>D, >D, =D, <=D, ==I, <>I, >I, =I, <=I, ==R, <>R, >R, =R, <=R, A, A(, ABS, ACOS, AD, AN, AN(, ASIN, ATAN, AUF, AW, BE, BEA, BEB, BEC, BEU, BLD, BTD, BTI, CAD, CALL, CAR, CAW, CC, CD, CDB, CLR, COS, CU, DBLG, DBNO, DEC, DILG, DINO, DTB, DTR, ENT, EXP, FN, FP, FR, INC, INVD, INVI, ITB, ITD, JBI, JC, JCB, JCN, JL, JM, JMZ, JN, JNB, JNBI, JO, JOS, JP, JPZ, JU, JUO, JZ, L, LAR1, LAR2, LC, LEAVE,LN, LOOP, MCR(, MCRA, MCRD, MOD, NEGD, NEGI, NEGR, NOP, NOT, O, O(, OD, ON, ON(, OPN, OW, POP, PUSH, R, RLD, RLDA, RND, RND+, RRD, RRDA, S, SA, SAVE, SD, SE, SET, SF, SI, SIN,SLD, SLW, SP, SPA, SPB, SPBB, SPBI, SPBIN, SPBN, SPBNB, SPL, SPM, SPMZ, SPN, SPO, SPP, SPPZ, SPS, SPU, SPZ, SQR, SQRT, SRD, SRW, SS, SSD, SSI, STW, SV, T, TAD, TAK, TAN, TAR, TAR1, TAR2,TAW, TDB, TRUNC, U, U(, UC, UD, UN, UN(, UW, X, X(, XN, XN(, XOD, XOW, ZR, ZV}, alsoletter={=,+, -, *, :, <, >,(,),#},
morestring=[b]",
morecomment=[l]//,
sensitive=false,
}

Mit ein wenig lstset gefummle kann das ganze dann z.B. so aussehen:
Highlighted AWL Sample

Solltet ihr Verbesserungsvorschläge, Fehlerkorrekturen, Fragen, oder einfach nur gefallen an diesem Snippet haben hinterlasst bitte einen Kommentar.

Dieser Beitrag wurde unter Programmieren abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.