Or() public method

public Or ( CharSet s ) : void
s CharSet
return void
示例#1
0
        void SimSet(out CharSet s)
        {
            int n1, n2;

            s = new CharSet();
            if (la.kind == 1)
            {
                Get();
                CharClass c = tab.FindCharClass(t.val);
                if (c == null)
                {
                    SemErr("undefined name");
                }
                else
                {
                    s.Or(c.set);
                }
            }
            else if (la.kind == 3)
            {
                Get();
                string name = t.val;
                name = tab.Unescape(name.Substring(1, name.Length - 2));
                foreach (char ch in name)
                {
                    if (dfa.ignoreCase)
                    {
                        s.Set(char.ToLower(ch));
                    }
                    else
                    {
                        s.Set(ch);
                    }
                }
            }
            else if (la.kind == 5)
            {
                Char(out n1);
                s.Set(n1);
                if (la.kind == 22)
                {
                    Get();
                    Char(out n2);
                    for (int i = n1; i <= n2; i++)
                    {
                        s.Set(i);
                    }
                }
            }
            else if (la.kind == 23)
            {
                Get();
                s = new CharSet(); s.Fill();
            }
            else
            {
                SynErr(46);
            }
        }
示例#2
0
        void Set(out CharSet s)
        {
            CharSet s2;

            SimSet(out s);
            while (la.kind == 20 || la.kind == 21)
            {
                if (la.kind == 20)
                {
                    Get();
                    SimSet(out s2);
                    s.Or(s2);
                }
                else
                {
                    Get();
                    SimSet(out s2);
                    s.Subtract(s2);
                }
            }
        }
示例#3
0
        void SimSet(out CharSet s)
        {
            int n1, n2; s = new CharSet();
            if (la.kind == 1) {
            Get();
            CharClass c = tab.FindCharClass(t.val);
              if (c == null) SemErr("undefined name"); else s.Or(c.set);

            } else if (la.kind == 3) {
            Get();
            string name = t.val;
            name = tab.Unescape(name.Substring(1, name.Length-2));
            foreach (char ch in name)
              if (dfa.ignoreCase) s.Set(char.ToLower(ch));
              else s.Set(ch);
            } else if (la.kind == 5) {
            Char(out n1);
            s.Set(n1);
            if (la.kind == 27) {
                Get();
                Char(out n2);
                for (int i = n1; i <= n2; i++) s.Set(i);
            }
            } else if (la.kind == 28) {
            Get();
            s = new CharSet(); s.Fill();
            } else SynErr(56);
        }
示例#4
0
 void Set(out CharSet s)
 {
     CharSet s2;
     SimSet(out s);
     while (la.kind == 25 || la.kind == 26) {
     if (la.kind == 25) {
         Get();
         SimSet(out s2);
         s.Or(s2);
     } else {
         Get();
         SimSet(out s2);
         s.Subtract(s2);
     }
     }
 }
示例#5
0
文件: Parser.cs 项目: SealedSun/prx
	void SimSet(
#line 228 "Coco.atg" //SOURCE beg=9517,len=13,col=8
								out CharSet s
#line default //END SOURCE
) {

#line 228 "Coco.atg" //SOURCE beg=9545,len=12,col=36
																																				int n1, n2; 
#line default //END SOURCE

#line 229 "Coco.atg" //SOURCE beg=9596,len=19,col=36
																																				s = new CharSet(); 
#line default //END SOURCE
		if (la.kind == _ident) {
			Get();

#line 230 "Coco.atg" //SOURCE beg=9654,len=169,col=36
																																				CharClass c = tab.FindCharClass(t.val);
                                   if (c == null) SemErr("undefined name"); else s.Or(c.set);
                                 
#line default //END SOURCE
		} else if (la.kind == _string) {
			Get();

#line 233 "Coco.atg" //SOURCE beg=9862,len=311,col=36
																																				string name = t.val;
                                   name = tab.Unescape(name.Substring(1, name.Length-2));
                                   foreach (char ch in name)
                                     if (dfa.ignoreCase) s.Set(char.ToLower(ch));
                                     else s.Set(ch); 
#line default //END SOURCE
		} else if (la.kind == _char) {
			Char(
#line 238 "Coco.atg" //SOURCE beg=10184,len=6,col=8
								out n1
#line default //END SOURCE
);

#line 238 "Coco.atg" //SOURCE beg=10212,len=11,col=36
																																				s.Set(n1); 
#line default //END SOURCE
			if (la.kind == 23) {
				Get();
				Char(
#line 239 "Coco.atg" //SOURCE beg=10241,len=6,col=15
															out n2
#line default //END SOURCE
);

#line 239 "Coco.atg" //SOURCE beg=10262,len=41,col=36
																																				for (int i = n1; i <= n2; i++) s.Set(i); 
#line default //END SOURCE
			}
		} else if (la.kind == 24) {
			Get();

#line 241 "Coco.atg" //SOURCE beg=10347,len=29,col=36
																																				s = new CharSet(); s.Fill(); 
#line default //END SOURCE
		} else SynErr(49);
	}
示例#6
0
文件: Parser.cs 项目: SealedSun/prx
	void Set(
#line 218 "Coco.atg" //SOURCE beg=9237,len=13,col=5
					out CharSet s
#line default //END SOURCE
) {

#line 218 "Coco.atg" //SOURCE beg=9268,len=12,col=36
																																				CharSet s2; 
#line default //END SOURCE
		SimSet(
#line 220 "Coco.atg" //SOURCE beg=9296,len=5,col=10
										out s
#line default //END SOURCE
);
		while (la.kind == 21 || la.kind == 22) {
			if (la.kind == 21) {
				Get();
				SimSet(
#line 221 "Coco.atg" //SOURCE beg=9319,len=6,col=16
																out s2
#line default //END SOURCE
);

#line 221 "Coco.atg" //SOURCE beg=9339,len=10,col=36
																																				s.Or(s2); 
#line default //END SOURCE
			} else {
				Get();
				SimSet(
#line 222 "Coco.atg" //SOURCE beg=9368,len=6,col=16
																out s2
#line default //END SOURCE
);

#line 222 "Coco.atg" //SOURCE beg=9388,len=16,col=36
																																				s.Subtract(s2); 
#line default //END SOURCE
			}
		}
	}
示例#7
0
 void ParseSet(out CharSet s)
 {
     CharSet s2;
     ParseSimSet(out s);
     while (la.kind == 22 || la.kind == 23) {
     if (la.kind == 22) {
         Get();
         ParseSimSet(out s2);
         s.Or(s2);
     } else {
         Get();
         ParseSimSet(out s2);
         s.Subtract(s2);
     }
     }
 }