inline stmt_def_field(const statement&parent,const token&tk,tokenizer&t): statement{parent,tk}, ident_{t.next_token()} { if(ident_.is_name("")) throw compiler_error(ident_,"expected field name"); if(!t.is_next_char('{')) throw compiler_error(ident_,"expected '{' initial value then '}' ",ident_.name()); while(true){ if(t.is_next_char('}'))break; tokens_.push_back(t.next_token()); } }
inline stmt_def_func_param(const statement&parent,tokenizer&t): statement{parent,t.next_token()} { assert(!tok().is_name("")); if(!t.is_next_char(':')) return; while(true){ if(t.is_eos())throw compiler_error(*this,"unexpected end of stream",tok().name_copy()); keywords_.push_back(t.next_token()); if(t.is_next_char(':')) continue; break; } }