+
+ if (cclp->look_token->len > 1 && i == 0)
+ { /* -xx*/
+ struct ccl_token *ntoken = ccl_token_add(cclp->look_token);
+
+ ntoken->kind = CCL_TOK_TERM;
+ ntoken->name = cclp->look_token->name + 1;
+ ntoken->len = cclp->look_token->len - 1;
+
+ cclp->look_token->len = 1;
+ cclp->look_token->name = "-";
+ }
+ else if (cclp->look_token->len > 1 && i == cclp->look_token->len-1)
+ { /* xx- */
+ struct ccl_token *ntoken = ccl_token_add(cclp->look_token);
+
+ ntoken->kind = CCL_TOK_TERM;
+ ntoken->name = "-";
+ ntoken->len = 1;
+
+ (cclp->look_token->len)--;
+ }
+ else if (cclp->look_token->len > 2 && i < cclp->look_token->len)
+ { /* xx-yy */
+ struct ccl_token *ntoken1 = ccl_token_add(cclp->look_token);
+ struct ccl_token *ntoken2 = ccl_token_add(ntoken1);
+
+ ntoken1->kind = CCL_TOK_TERM; /* generate - */
+ ntoken1->name = "-";
+ ntoken1->len = 1;
+
+ ntoken2->kind = CCL_TOK_TERM; /* generate yy */
+ ntoken2->name = cclp->look_token->name + (i+1);
+ ntoken2->len = cclp->look_token->len - (i+1);
+
+ cclp->look_token->len = i; /* adjust xx */
+ }
+ else if (i == cclp->look_token->len &&
+ cclp->look_token->next &&
+ cclp->look_token->next->kind == CCL_TOK_TERM &&
+ cclp->look_token->next->len > 1 &&
+ cclp->look_token->next->name[0] == '-')
+
+ { /* xx -yy */
+ /* we _know_ that xx does not have - in it */
+ struct ccl_token *ntoken = ccl_token_add(cclp->look_token);
+
+ ntoken->kind = CCL_TOK_TERM; /* generate - */
+ ntoken->name = "-";
+ ntoken->len = 1;
+
+ (ntoken->next->name)++; /* adjust yy */
+ (ntoken->next->len)--;