Tôi đang cố gắng lưu đầu ra của một lệnh vào một tập tin. Lệnh là:
clang -Xclang -ast-dump -fsyntax-only main.cpp > output.txt
Tuy nhiên, tệp output.txt kết quả khi được mở (bởi gedit và jedit trên ubfox) mang lại cho tôi điều này:
[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
...
Khi nó thực sự trông như thế này:
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'
...
Tôi nghĩ rằng nó có thể là một vấn đề về mã hóa, tôi đã kiểm tra mã hóa của tập tin, file -bi output.txt
mà đầu ra text/plain; charset=us-ascii
.
Tôi nghĩ có lẽ nếu tôi thay đổi mã hóa thành utf-8 thì vấn đề sẽ được khắc phục nên tôi đã thử điều này:
clang -Xclang -ast-dump -fsyntax-only main.cpp | iconv -f us-ascii -t UTF-8 > output.txt
nhưng nó không tạo ra sự khác biệt.
Tôi có thể làm gì để giải quyết vấn đề này?
Vấn đề không phải là tôi đang cố gắng xem phiên bản được tô sáng cú pháp (tôi không gặp vấn đề gì khi xem nó ở vị trí đầu tiên). Tôi cần lưu AST được tạo bởi clang vào một tệp và sau đó phân tích nó, điều này sẽ gây khó khăn với thông tin màu còn lại.
>
không tạo ra đầu ra, nó chỉ đơn giản chỉ định trình bao mà bạn muốn đặt đầu ra củaclang
lệnh trong tệp đã cho, thay vì sau đó là terminal. Sau đó, bạn đang xem nó theo cách không cho phép mã màu theo cùng một cách. Nếu bạn vàocat
tập tin, nó sẽ hoạt động như thiết bị đầu cuối sẽ tiếp quản và bạn có thể thựcless
hiện tương tự với-R
cờ.