Пример #1
0
        static void TokenFactor(out Graph g)
        {
            string name;
            int    kind;

            g = new Graph();
            if (la.kind == 1 || la.kind == 3 || la.kind == 5)
            {
                Sym(out name, out kind);
                if (kind == id)
                {
                    CharClass c = CharClass.Find(name);
                    if (c == null)
                    {
                        SemErr("undefined name");
                        c = new CharClass(name, new BitArray(CharClass.charSetSize));
                    }
                    Node p = new Node(Node.clas, null, 0);
                    p.val = c.n;
                    g     = new Graph(p);
                }
                else
                {
                    g = Graph.StrToGraph(name); // str
                }
            }
            else if (la.kind == 28)
            {
                Get();
                TokenExpr(out g);
                Expect(29);
            }
            else if (la.kind == 30)
            {
                Get();
                TokenExpr(out g);
                Expect(31);
                Graph.MakeOption(g);
            }
            else if (la.kind == 32)
            {
                Get();
                TokenExpr(out g);
                Expect(33);
                Graph.MakeIteration(g);
            }
            else
            {
                SynErr(54);
            }
        }