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); }
public labellist(int ll_nlabels, label[] ll_label) { this.ll_nlabels = ll_nlabels; this.ll_label = new labelPtr(ll_label, 0); }
public labelPtr(labelPtr ptr) { }