Saya mencoba untuk menyimpan output dari perintah ke file. Perintahnya adalah:
clang -Xclang -ast-dump -fsyntax-only main.cpp > output.txt
Namun file output.txt yang dihasilkan ketika dibuka (oleh gedit dan jedit di ubuntu) memberi saya ini:
[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
...
Kapan seharusnya terlihat seperti ini:
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'
...
Saya pikir itu mungkin masalah penyandian, saya memeriksa penyandian file, file -bi output.txt
yang menghasilkan text/plain; charset=us-ascii
.
Saya pikir mungkin jika saya mengubah encoding ke utf-8 masalah akan diperbaiki jadi saya mencoba ini:
clang -Xclang -ast-dump -fsyntax-only main.cpp | iconv -f us-ascii -t UTF-8 > output.txt
tapi itu tidak membuat perbedaan.
Apa yang bisa saya lakukan untuk mengatasi masalah ini?
Masalahnya bukan bahwa saya mencoba untuk melihat versi yang disorot sintaks (saya tidak punya masalah melihatnya di tempat pertama). Saya perlu menyimpan AST yang dihasilkan oleh dentang ke file dan kemudian menguraikannya, yang akan sulit dengan informasi warna yang tersisa.
>
tidak menghasilkan output, itu hanya menunjuk ke shell bahwa Anda ingin meletakkan output dariclang
perintah Anda di file yang diberikan, daripada terminal itu. Setelah itu Anda melihatnya dengan cara yang tidak mengizinkan kode warna dengan cara yang sama. Jika Anda kecat
file itu akan berfungsi sebagai terminal akan mengambil alih, dan Anda dapat melakukanless
hal yang sama dengan-R
bendera.