Пример #1
0
        private static int classify(parser_state ps, int type, CharPtr str)
        {
            grammar g = ps.p_grammar;
            int     n = g.g_ll.ll_nlabels;

            if (type == NAME)
            {
                CharPtr  s = new CharPtr(str);
                labelPtr l = new labelPtr(g.g_ll.ll_label);
                int      i;
                for (i = n; i > 0; i--, l.inc())
                {
                    if (l[0].lb_type == NAME && l[0].lb_str != null &&
                        l[0].lb_str[0] == s[0] &&
                        strcmp(l[0].lb_str, s) == 0)
                    {
                        if (0 == ps.p_generators &&
                            s[0] == 'y' &&
                            strcmp(s, "yield") == 0)
                        {
                            break;
                        }
                        if (D())
                        {
                            printf("It's a keyword\n");
                        }
                        return(n - i);
                    }
                }
            }

            {
                labelPtr l = new labelPtr(g.g_ll.ll_label);
                int      i;
                for (i = n; i > 0; i--, l.inc())
                {
                    if (l[0].lb_type == type && l[0].lb_str == null)
                    {
                        if (D())
                        {
                            printf("It's a token we know\n");
                        }
                        return(n - i);
                    }
                }
            }

            if (D())
            {
                printf("Illegal token\n");
            }
            return(-1);
        }
Пример #2
0
 public labellist(int ll_nlabels, label[] ll_label)
 {
     this.ll_nlabels = ll_nlabels;
     this.ll_label   = new labelPtr(ll_label, 0);
 }
Пример #3
0
 public labelPtr(labelPtr ptr)
 {
 }