ref: 29b7a5ea3d9a74232a6d23c1fb288f1240bcc2ba
dir: /sys/src/liblex/yyless.c/
#include <u.h>
#include <libc.h>
#include <stdio.h>
extern char yytext[];
extern int yyleng;
extern int yyprevious;
void yyunput(int c);
void
yyless(int x)
{
char *lastch, *ptr;
lastch = yytext+yyleng;
if(x>=0 && x <= yyleng)
ptr = x + yytext;
else
ptr = (char*)x;
while(lastch > ptr)
yyunput(*--lastch);
*lastch = 0;
if (ptr >yytext)
yyprevious = lastch[-1];
yyleng = ptr-yytext;
}