The Hoathis\Regex 库。

dev-master 2014-02-13 21:22 UTC

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

轮到你了!