code: function ontoken(state, paren, curly, suber, param, words, token, fixes) {
  	var type = token.type.type;
  	var word = token.type.keyword;
  	var cuts = token.type.beforeExpr;
  	var value = token.value;
  	if (param.done) {
  		onparamtoken(state, paren, param, value, word, type);
  	}
  	switch (type) {
  		case 'name':
  			onnamedtoken(
  				state,
  				paren,
  				curly,
  				suber,
  				param,
  				words,
  				token.start,
  				value
  			);
  			break;
  		case '.':
  			state.parts.push(type);
  			break;
  		case '(':
  			onparenopen(state, paren, suber, param);
  			break;
  		case ')':
  			onparenclose(state, paren, suber, param, token, fixes);
  			break;
  		case '{':
  			oncurlyopen(curly);
  			break;
  		case '}':
  			oncurlyclose(state, curly, suber);
  			break;
  		default:
  			state.parts = [];
  			break;
  	}
  	if (word) {
  		if (cuts) {
  			state.parts = [];
  		} else {
  			state.parts.push(word);
  		}
  	}
  }
docs: Parse tokens ................................................................ 
  @param {State} state
  @param {Paren} paren
  @param {Curly} curly
  @param {Suber} suber
  @param {Param} param
  @param {Words} words
  @param {object} token
  @param {Array<Fix>} fixes