Lines Matching full:production
73 * FILE ::= { [PRODUCTION] [COMMENT] "\n" | INCLUDE }
75 * PRODUCTION ::= LHS ":" RHS [ COMMENT ]
316 struct production { struct
332 const struct production *production) in add_production() argument
340 if (darray_size(table->nodes) + production->len + MAX_LHS_LEN > MAX_COMPOSE_NODES) in add_production()
342 if (darray_size(table->nodes) + production->len >= MAX_COMPOSE_NODES) in add_production()
354 const xkb_keysym_t keysym = production->lhs[lhs_pos]; in add_production()
355 const bool last = lhs_pos + 1 == production->len; in add_production()
399 (node->leaf.utf8 == 0 && !production->has_string) || in add_production()
401 node->leaf.utf8 != 0 && production->has_string && in add_production()
403 production->string) in add_production()
406 (node->leaf.keysym == XKB_KEY_NoSymbol && !production->has_keysym) || in add_production()
408 node->leaf.keysym != XKB_KEY_NoSymbol && production->has_keysym && in add_production()
409 node->leaf.keysym == production->keysym in add_production()
422 if (production->has_string) { in add_production()
424 darray_append_items(table->utf8, production->string, in add_production()
425 strlen(production->string) + 1); in add_production()
427 if (production->has_keysym) { in add_production()
428 node->leaf.keysym = production->keysym; in add_production()
514 struct production production; in parse() local
519 production.len = 0; in parse()
520 production.has_keysym = false; in parse()
521 production.has_string = false; in parse()
522 production.mods = 0; in parse()
523 production.modmask = 0; in parse()
562 if (production.len <= 0) { in parse()
569 production.mods = 0; in parse()
570 production.modmask = ALL_MODS_MASK; in parse()
577 production.modmask = ALL_MODS_MASK; in parse()
594 if (production.len + 1 > MAX_LHS_LEN) { in parse()
599 production.lhs[production.len++] = keysym; in parse()
600 production.mods = 0; in parse()
601 production.modmask = 0; in parse()
631 production.modmask |= 1 << mod; in parse()
633 production.mods &= ~(1 << mod); in parse()
635 production.mods |= 1 << mod; in parse()
643 if (production.has_string) { in parse()
651 if (val.string.len >= sizeof(production.string)) { in parse()
655 strcpy(production.string, val.string.str); in parse()
656 production.has_string = true; in parse()
665 if (production.has_keysym) { in parse()
669 production.keysym = keysym; in parse()
670 production.has_keysym = true; in parse()
673 if (!production.has_string && !production.has_keysym) { in parse()
677 add_production(table, s, &production); in parse()