日期:2010-07-05  浏览次数:20597 次

点击这里下载源文件

注意:
1、这个是Alpha版(我有好多东西都只有Alpha版本),因此不保证完全正确,只能够说能够用。
2、因此请记住多一点保存,否则有可能因为一个Exception导致程序终止,那你的工作就完全丢失了!
3、私人物品,保留版权。
4、免费&自由使用,但请您独立承担因此带来的后果。我不提供任何担保。

使用说明:
1、打开和保存都在第四个页面里面(很丑吧,这个是我随便乱拖乱放弄出来的),请尽量选择使用文本方式保存。(上面的文件菜单原来无法使用,现在已经修改变成可用的。)
2、编辑在第一个页面里面。
3、编辑的时候,如果选中了一项已经存在的项目,则表示修改该项内容,包括修改名称或者内容。
4、如果是新建的话,请点击列表里面的“点击此处添加”。
5、连续添加模式指,点击“添加”按钮(或者回车)后自动清空内容,继续新建。
6、输入的格式如下:
  a.  name:context
      表示用name作为名字表示context这个内容
  b. 其中name不接受*?+<>{}()/等字符
  c. 如果name的开头有"_"(下划线),则表示这个定义不需要被特定的组捕获。否则表示用该名字命名的组捕获。eg:
      <_name>:a
      <name>:b
      前者表示遇到<_name>的时候替换成a,后者表示遇到<name>的时候替换成(?<name>b)

  d. context的格式是在标准的正则表达式的基础上进行扩展的,因此普通的正则表达式这里是接受的,扩展部分请看下一条。
  e. 在context里面可以用<name>来表示一个已经定义的内容(如果尚未定义,则会显示成红色的字符,否则应该是蓝色的),后面可以直接跟+*?{n,m}等表示重复的项目。因此context里面"<"(左尖括号,小于号)需要用\来转义。
  f. 某些时候可能会在编辑的时候出现死机的状态,这个是因为我所使用的语法分析正则表达式有问题。(所以多多保存啊!不然就会死得很难看哦。)解决的办法是:用notepad书写完整之后,拷贝上去,一般都不会有问题的。
7、编辑框下面的那个文本框是一个自动展开窗口,你可以通过这里预览整个表达式的情况,或者拷贝粘贴来进行测试。注意:不要拷贝前面的“name:”,这个不是正则表达式的内容。
8、测试在第二个页面,NFA实际上就是正则表达式啦,测试字符就是指输入文字,测试结果表示的是匹配情况。
9、你可以去掉View Group、View Capture的勾,如果你不想显示哪些组的捕获情况,或者不想知道具体捕获情况。
10、捕获组一般都会显示你所定义的组的名称。
11、在第三个页面里面是目前的树状图,每一个节点下面的是当前节点里面所包含的非终结符。选中某一个节点就会在右边显示定义,及其展开情况。在这里可以很容易的掌握你的这个正则表达式的具体情况。这里也可以拷贝某一个节点的展开情况,进行局部的分析。例如:你发现_Root这个正则表达式无法匹配,可以看看下面的每一个非终结符是否能够正确进行部分匹配,这样很容易就能够找出问题所在。
12、为了让你更加了解整个的使用方式,特意给你附带了两个非常实际的例子。rxSearch2是这个软件本身的语法分析器的正则表达式(至少语法加亮就用到这个,还有一些其它的用到的地方)。PDA加速测试就是我那个PDA源代码级加速器的分析器的正则表达式。你可以看看树形结构,就知道看起来会比较容易懂,而且设计起来也比较轻松。

事实上,这个软件只是一个原形,为了能够分析那个我定义的扩展正则表达式的格式,需要一个构造分析字符串的东西,有点像用编译器编译这个编译器的源代码的感觉。虽然破旧,但是我可是爱不释手,用来构造了好些东西。很多稍微简单点的正则表达式,只需要十分钟就能够做得非常好了。(我是指100%正确)