yyless.c 403 B

123456789101112131415161718192021222324252627
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <stdio.h>
  4. extern char yytext[];
  5. extern int yyleng;
  6. extern int yyprevious;
  7. void yyunput(int c);
  8. void
  9. yyless(int x)
  10. {
  11. char *lastch, *ptr;
  12. lastch = yytext+yyleng;
  13. if(x>=0 && x <= yyleng)
  14. ptr = x + yytext;
  15. else
  16. ptr = (char*)x;
  17. while(lastch > ptr)
  18. yyunput(*--lastch);
  19. *lastch = 0;
  20. if (ptr >yytext)
  21. yyprevious = lastch[-1];
  22. yyleng = ptr-yytext;
  23. }