Esempio n. 1
0
        private static void expr(NfaPair pair)
        {
            NfaPair nfaPair = Alloc.NewNfaPair();

            MakeNfa.cat_expr(pair);
            while (Tokens.OR == MakeNfa.spec.current_token)
            {
                MakeNfa.gen.Advance();
                MakeNfa.cat_expr(nfaPair);
                Nfa nfa = Alloc.NewNfa(MakeNfa.spec);
                nfa.Sibling      = nfaPair.start;
                nfa.Next         = pair.start;
                pair.start       = nfa;
                nfa              = Alloc.NewNfa(MakeNfa.spec);
                pair.end.Next    = nfa;
                nfaPair.end.Next = nfa;
                pair.end         = nfa;
            }
        }