1
16
17 import org.as2lib.regexp.AsciiUtil;
18 import org.as2lib.regexp.node.Node;
19 import org.as2lib.regexp.node.NotSingleA;
20 import org.as2lib.regexp.node.TreeInfo;
21
22
28
29 class org.as2lib.regexp.node.SingleA extends Node {
30
31 private var ch:Number;
32
33 public function SingleA(n:Number) {
34 ch = AsciiUtil.toLower(n);
35 }
36
37 public function dup(flag:Boolean):Node {
38 return (flag) ? new NotSingleA(ch) : new SingleA(ch);
39 }
40
41 public function match(matcher:Object, i:Number, seq:String):Boolean {
42 if (i < matcher.to) {
43 var c:Number = seq.charCodeAt(i);
44 if (c == ch || AsciiUtil.toLower(c) == ch) {
45 return next.match(matcher, i+1, seq);
46 }
47 }
48 return false;
49 }
50
51 public function study(info:TreeInfo):Boolean {
52 info.minLength++;
53 info.maxLength++;
54 return next.study(info);
55 }
56 }
57