正则表达式在智能表单中的应用

所谓正则表达式,在计算机科学中是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。在智能表单应用程序中,正则表达式至少有两种用途。一种是在顾客的反馈中查找特定的名词。使用正则表达式,可以做的更智能一些。使用一个字符串函数,如果希望匹配“shop”、“customer service“或”retail“,就必须做3次不同的搜索。如果使用一个正则表达式,就可以同时匹配所有3个.

        所谓正则表达式,在计算机科学中是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。

表达式的优化代码的生成

当一个基本块仅包含单一的表达式求值时,或者我们认为以逐次处理各个表达式的方式为基本块生成代码就已经足够了,那么我们就可以最佳地选择寄存器。在下面的算法中,我们引人对一个表达式树(即一个表达式的语法树)的结点添加数字标号的方案。在使用固定个数的寄存器来对一个表达式求值的情况下,该方案允许我们为表达式生成最优的代码。

Ershov 数

一开始,我们给一个表达式树的每个结点各赋予一个数值。该数表示如果我们不把任何临时值存放问内存的话,计算该表达式需要多少个寄存器。这些数有时被称为Ershou数(Ershov nurnher)。这是根据A.Ershov命名的,他为只有一个算术寄存器的机器使用了类似的方案。对我们的机器模型而言,计算Ershov数的规则如下:

从带标号的表达式树生成代码

假设在我们的机器模型中,所有的运算分量都必须在寄存器中,且寄存器可以同时用于存放某个运算的运算分量和结果。可以证明,如果在计算表达式的过程中不允许把中间结果保存回内存,那么一个结点的标号就等于计算该结点对应的表达式时需要的最少的寄存器个数。因为在这个机器模型中,我们必须把每个运算分量加载到寄存器中,且必须计算每个内部结点所对应的中间结果,所以,造成生成代码不是最优代码的唯一可能是我们使用了不必要的将临时结果存回内存的指令。对这个断言的证明包含在下面的算法中。这个算法生成的代码不包含将临时结果存回内存的指令,而这个代码所使用的寄存器数目就是根结点的标号。

变量表达式算法可用

交汇运算是交集运算,任何发现x+y在某个程序点上不可用的理由都会在流图中沿着所有可能的路径向前传播,直到x+y被重新计算并再次变得可用为止。第二,只有两个理由可能会使x+y变成不可用的。

1)因为x或y在基本块B中被定值且其后没有计算x+y,因此x+y被杀死。在这种情况下,我们第一次应用传递函数fs的时候,x+y就会从OUT[B]中被删除。

2)在某些路径中,x+y—直没有被计算。因为x+y肯定不会在OUT[ENTRY]中,并且它也不会在上面说的那条路径中被生成。我们可以通过对路径长度的归纳来证明x + y最终会从这条路径的所有基本块的IN和OUT值中删除。

«1»
最近发表
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
Tags列表
网站收藏
图标汇集
  • 订阅本站的 RSS 2.0 新闻聚合
友情链接

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.