Ich versuche, die Ausgabe eines Befehls in einer Datei zu speichern. Der Befehl lautet:
clang -Xclang -ast-dump -fsyntax-only main.cpp > output.txt
Die resultierende output.txt-Datei beim Öffnen (von gedit und jedit auf Ubuntu) gibt mir jedoch Folgendes:
[0;1;32mTranslationUnitDecl[0m[0;33m 0x4192020[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m
[0;34m|-[0m[0;1;32mTypedefDecl[0m[0;33m 0x4192558[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m implicit[0;1;36m __int128_t[0m [0;32m'__int128'[0m
[0;34m| `-[0m[0;32mBuiltinType[0m[0;33m 0x4192270[0m [0;32m'__int128'[0m
[0;34m|-[0m[0;1;32mTypedefDecl[0m[0;33m 0x41925b8[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m implicit[0;1;36m __uint128_t[0m [0;32m'unsigned __int128'[0m
[0;34m| `-[0m[0;32mBuiltinType[0m[0;33m 0x4192290[0m [0;32m'unsigned __int128'[0m
...
Wann sollte es wirklich so aussehen:
TranslationUnitDecl 0x4e46020 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x4e46558 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x4e46270 '__int128'
|-TypedefDecl 0x4e465b8 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
| `-BuiltinType 0x4e46290 'unsigned __int128'
...
Ich dachte, es könnte ein Codierungsproblem sein. Ich habe die Codierung der Datei überprüft, file -bi output.txt
die ausgegeben wird text/plain; charset=us-ascii
.
Ich dachte, wenn ich die Codierung auf utf-8 ändere, ist das Problem möglicherweise behoben. Deshalb habe ich Folgendes versucht:
clang -Xclang -ast-dump -fsyntax-only main.cpp | iconv -f us-ascii -t UTF-8 > output.txt
aber es machte keinen Unterschied.
Was kann ich tun, um dieses Problem zu lösen?
Das Problem ist nicht, dass ich versuche, die Version mit der hervorgehobenen Syntax anzuzeigen (ich hatte überhaupt keine Probleme, sie anzuzeigen). Ich muss den durch Klirren erzeugten AST in einer Datei speichern und dann analysieren, was mit den verbleibenden Farbinformationen schwierig wäre.
>
keine Ausgabe generiert wird, sondern lediglich die Shell bezeichnet, die die Ausgabe Ihresclang
Befehls in die angegebene Datei und nicht in das Terminal schreiben soll. Danach betrachten Sie es auf eine Weise, die Farbcodes nicht auf die gleiche Weise zulässt. Wenn Sie incat
der Datei wären, würde es funktionieren, als würde das Terminal übernehmen, und Sie könnenless
das gleiche mit der-R
Flagge machen.