davidkuhner / regex
The Hoathis\Regex 库。
dev-master
2014-02-13 21:22 UTC
Requires
- php: >=5.4.1
- davidkuhner/graphictools: dev-master
- hoa/visitor: dev-master
This package is not auto-updated.
Last update: 2024-09-24 06:01:56 UTC
README
编译器是功能强大的工具,提供了许多服务。然而,快速可视化它们处理的输入和输出数据可能会变得很困难。本主题的目标是双重的:首先,我们提出实现正则表达式的图形表示,其次,可选地,扩展新获得的能力,以实现代数语法的图形表示。
使用方法
如果Hoa安装在了/usr/local/lib/Hoa,那么Hoathis也应该安装在同一级别,即在/usr/local/lib/Hoathis。这个库是Hoa\Regex的Hoathis。以下是安装它的简单方法(不通过Composer):
$ git clone http://git.hoa-project.net/Central.git \
/usr/local/lib/Hoa.central
$ ln -s /usr/local/lib/Hoa.central/Hoa \
/usr/local/lib/Hoa
$ ln -s /usr/local/lib/Hoa.central/Hoathis \
/usr/local/lib/Hoathis
$ git clone https://github.com/davidkuhner/compiler-visualization \
/usr/local/lib/Hoathis/Regex
将hoa脚本(位于/usr/local/lib/Hoa/Core/Bin/)放入$PATH。然后我们可以使用hoa compiler:pp。这个命令接受语法和数据作为输入,并按此语法分析数据。它生成一个AST,然后我们可以通过选项--visitor dump或--visitor-class …应用一个访问者。为了回顾,以下是过程流程图。
从语法和正则表达式(我们的数据)开始,编译器为我们生成一个AST。我们在AST上应用一个访问者以生成(将其转换为)SVG。
+---------+
+-----------+ | visitor |
| grammaire |---------+ +---------+
+-----------+ | |
v v
+-------+ +----------+ +-----+
| regex | ---> | compiler | ---> | AST |
+-------+ +----------+ +-----+
|
v
+-------+
| <svg> |
+-------+
第一个例子,我们将dumper AST。
$ echo '[a-z]+' | \
hoa compiler:pp --visitor dump hoa://Library/Regex/Grammar.pp 0
> #expression
> > #quantification
> > > #class
> > > > #range
> > > > > token(literal, a)
> > > > > token(literal, z)
> > > token(one_or_more, +)
现在,我们应用我们的自定义访问者 Hoathis\Regex\Visitor\Visualization。
$ echo '[a-z]+' | \
hoa compiler:pp \
--visitor-class Hoathis.Regex.Visitor.Visualization \
hoa://Library/Regex/Grammar.pp \
0
轮到你了!