Das Projekt, das ich übernommen habe, läuft unter Windows und der Autor hatte ein tclsh-Skript geschrieben, das alle ";" in "@" umwandelt. Dem Skript unterwirft er alle .asm Files auf einen Schlag und ersetzt ; durch @ und schreibt einen .s-File heraus. Was dabei mit einem Literal ';' passiert, darüber hat er sich wohl keine Gedanken gemacht. Hab's mal getestet und aus ';' wird '@' :-( Kurz und gut, gibt es eine "Standard"-Methode, diese Syntax-Anpassung vorzunehmen, sozusagen, den "Standard"-Preprocessor? Ein sed script könnte es sicher auch. (Skriptsprachen, die mit "p" anfangen, bitte nicht :). Auch von Makefile hatte er noch nichts gehört. Die "Make"-Umgebung basiert auf .bat-Skripten; ich will das für mich auf macOS (UNIX, Linux) umstellen. Grüße am Morgen, Christoph
Beitrag #6441366 wurde vom Autor gelöscht.
Ich sehe, daß hier eine Antwort gepostet wurde, kann die aber nicht lesen. Fehler in der Forum-Software?
:
Bearbeitet durch User
Nein, ich habe meine Antwort zurückgezogen, weil sie nach kurzem Nachdenken viel zu kurz gegriffen hat.
Jörg W. schrieb: > Nein, ich habe meine Antwort zurückgezogen, weil sie nach kurzem > Nachdenken viel zu kurz gegriffen hat. :) Ach so. Dann doch Forumsoftware-Fehler. Zurückgezogene Beiträge sollten eigentlich auch nicht zählen. Und weiter zur Sache: habe folgendes sed Skript gemacht:
1 | file s: |
2 | |
3 | s/^\([^(;\'\")]*\)\(;\)\(.*$\)/\1@\3/ |
4 | |
5 | |
6 | testcase: |
7 | $ cat testcase |
8 | ; |
9 | ; |
10 | ;**********;**** |
11 | ';' |
12 | ";" |
13 | ';' |
14 | ";" |
15 | ABC r1,';' |
16 | ABC r1,";" |
17 | ; ";" ';' |
18 | ;;; |
19 | |
20 | |
21 | $ sed -f s testcase |
22 | @ |
23 | @ |
24 | @**********;**** |
25 | ';' |
26 | ";" |
27 | ';' |
28 | ";" |
29 | ABC r1,';' |
30 | ABC r1,";" |
31 | @ ";" ';' |
32 | @;; |
:
Bearbeitet durch User
Stelle gerade fest, daß mein Skript noch nicht perfekt ist. Es läßt einige Fälle wie diesen
1 | .include "stm32f407.s" ; target register defines |
2 | .set PLLP, (DIVP - 2) / 2 ; some other comment |
durchgehen. Korrektur folgt hier:
1 | #!/bin/sh
|
2 | sed -e "s/^\([^(;\'\")]*\)\(;\)\(.*$\)/\1@\3/" -e "s/^\([^;]*\)\(;\)\(.*\)/\1@\3/" $1 |
:
Bearbeitet durch User
Noch eine Anmerkung: Mein Script arbeitet unter BSD (macOS) sed (nicht GNU sed)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.