Skip to content

Word2VecT/yacv

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yacv: Yet Another Compiler Visualizer

基于 Github 项目 yacv 修改,修复了大量 bug,添加许多功能

yacv 是一个用于可视化 LL(1) 和 LR 解析器 (LR0/SLR1/LR1/LALR1) 的工具。

介绍

学习解析技术可能会很困难。虽然著名的 "龙书" 是关于编译器的极好资源,但它对解析过程本身的可视化内容非常少。尽管如此,仍然存在一些可视化工具,例如 Zak Kincaid 和 Shaowei Zhu 的 LR(0) parser visualizerLL(1) parser visualizerJSMachinesJison 等。然而,所有这些工具都是基于网页的,并且大多数都在表格中显示步骤,这并不是很直观。

yacv 试图通过使用 manim 来克服所有这些缺点。

主要功能

yacv 接受上下文无关文法和字符串,并可以用于:

  1. 可视化语法树
  2. 可视化 LR DFA
  3. 导出 LL(1)、LR(LR0/SLR1/LR1/LALR1) 语法分析表
  4. 使用 manim 逐步可视化预测分析过程

安装

依赖:

  1. Python 3.6+
  2. pygraphviz
  3. pandas
  4. manim : yacv 理论上 应该 可以与两个 manim 版本(ManimGLManimCE)一起工作,但推荐使用 ManimCE

pycairo 相关问题 ? 查看 this

要安装 yacv,请将 yacv GitHub 仓库 克隆到本地机器,然后使用 `pip 进行安装

git clone https://github.com/ 
cd yacv 
pip install -e .
pip install colour pyyaml manimgl

如果遇到 pygraphviz 安装报错,可以尝试以下命令后再安装

python3 -m pip install -U --no-cache-dir  \
            --config-settings="--global-option=build_ext" \
            --config-settings="--global-option=-I$(brew --prefix graphviz)/include/" \
            --config-settings="--global-option=-L$(brew --prefix graphviz)/lib/" \
            pygraphviz

请查看 docs 中关于在 Ubuntu WSL 上安装的额外说明

使用方法

使用示例配置 example_config.yml 运行 yacv

yacv example_config.yml 

要使用您自己的文法和字符串,请创建您自己的自定义配置并使用它。各种文法的配置文件示例可以在 examples/ 目录中找到。

Demo

运行上述示例配置后,将生成以下内容:

Untitled

DFA

DFA

Untitled

可视化分析过程

ManimParsingVisualization.mp4

已知问题

  • 暂不支持 ‘,只能使用单个字母作为终结符和非终结符

文档

有关更多信息,请参阅 文档

许可证

MIT

阅读材料

  1. A good, free book for interpreters
  2. GCC does not use machine generated parsers
  3. Why LL and LR parsing is hard ?

原作者还写了一篇关于如何构建这个项目的博客。请查看这里

About

Yet Another Compiler Visualizer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%