vaaandark / informater

C 语言格式化器 - 华科计科数据结构课设

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

informater

C 语言格式化器 - 华科计科数据结构课设

依赖

  • graphviz 用于画图。
$ sudo apt install graphviz # for Debian or Ubuntu
$ sudo dnf install graphviz # for Fedora or CentOS
$ sudo pacman -S graphviz # for ArchLinux or Manjaro
  • 一个可以查看矢量图的图片浏览器(或者一个现代浏览器)。

构建

$ cd informater
$ mkdir build
$ make all # 如果使用 clang 可以加上 CC=clang

会在./build目录生成可执行文件informater

测试和使用

% ./build/informater
Usage: informater [options] file...
Options:
  -h                display this information
  -l                display lex information
  -o after-file     redirect output to after-file
  -t ast-graph      generate a dot image with AST

使用如下命令可以将before.c文件格式化为after.c文件,并将 AST 保存在build/AST-graph.dot中。如果不使用-o选项,格式化后的结果会直接输出。

$ ./build/informater -t build/AST-graph.dot -o after.c before.c
$ dot -Tsvg build/AST-graph.dot -o build/AST-graph.svg # 由 .dot 文件生成矢量图

也可以直接运行test/draw.sh,然后查看./build/AST-graph.svg文件,它是生成的抽象语法树。

$ ./tests/draw.sh example/test-02.c
$ for p in ./build/*.svg; do xdg-open $p; done

ast-example

缺陷

支持的语法不丰富。

About

C 语言格式化器 - 华科计科数据结构课设

License:GNU General Public License v2.0


Languages

Language:C 98.0%Language:Makefile 1.7%Language:Shell 0.3%