ฉันพยายามบันทึกผลลัพธ์ของคำสั่งไปยังไฟล์ คำสั่งคือ:
clang -Xclang -ast-dump -fsyntax-only main.cpp > output.txt
อย่างไรก็ตามไฟล์ output.txt ที่เกิดขึ้นเมื่อเปิด (โดย gedit และ jedit บน Ubuntu) ให้สิ่งนี้กับฉัน:
[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
...
เมื่อมันควรมีลักษณะเช่นนี้:
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'
...
ฉันคิดว่ามันอาจจะมีปัญหาของการเข้ารหัสที่ผมตรวจสอบการเข้ารหัสของไฟล์ที่เอาท์พุทfile -bi output.txt
text/plain; charset=us-ascii
ฉันคิดว่าถ้าฉันเปลี่ยนการเข้ารหัสเป็น utf-8 ปัญหาจะได้รับการแก้ไขดังนั้นฉันจึงลองทำสิ่งนี้:
clang -Xclang -ast-dump -fsyntax-only main.cpp | iconv -f us-ascii -t UTF-8 > output.txt
แต่มันก็ไม่ได้สร้างความแตกต่าง
ฉันจะทำอย่างไรเพื่อแก้ไขปัญหานี้
ปัญหาไม่ใช่ว่าฉันกำลังพยายามดูเวอร์ชันที่เน้นไวยากรณ์ (ฉันไม่มีปัญหาในการดูในตอนแรก) ฉันต้องการบันทึก AST ที่สร้างโดยเสียงดังกราวไปยังไฟล์แล้วแยกวิเคราะห์ซึ่งจะยากกับข้อมูลสีที่เหลือ
>
ว่าไม่ได้สร้างเอาต์พุตมันแค่กำหนดให้เชลล์ที่คุณต้องการใส่เอาท์พุทของclang
คำสั่งของคุณลงในไฟล์ที่กำหนดแทนที่จะเป็นเทอร์มินัล หลังจากนั้นคุณดูในลักษณะที่ไม่อนุญาตให้ใช้รหัสสีในลักษณะเดียวกัน หากคุณไปcat
ที่ไฟล์มันจะทำงานได้เหมือนที่เทอร์มินัลจะเข้าควบคุมและคุณสามารถทำless
เช่นเดียวกันกับการ-R
ตั้งค่าสถานะ