Я намагаюся зберегти висновок команди у файл. Команда така:
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
прапором.