⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lexyy.c

📁 用于zip arj rar 等密码破解库源码,非常好用
💻 C
字号:
/*--------------------------------------------------------*//* Copyright (c) PSW-soft 1996                            *//*                                                        *//* File:     LEXYY.C                                      *//*                                                        *//* Project:  Password Cracking Library                    *//* Version:  2.0                                          *//*                                                        *//* Author:   Pavel Semjanov                               *//* Company:  PSW-soft                                     *//*                                                        *//* Comment:  Lexycal analyzer                             *//*                                                        *//* Create:   06.08.1996 21:39:20                          *//* Update:   19.08.1998 17:17:30                          *//*                                                        *//* Revision: 2.0   19.08.1998 17:17:30 2.0 release        *//* Revision: 1.1a   13.08.1997 13:34:04 Russian charset   *//*           bug fixed.                                   *//* Revision: 1.1   26.08.1996 14:29:40 Special charset    *//*           added.                                       *//* Revision: 1.0   06.08.1996 21:39:20 Initial revision   *//*           (implemented in cRARk 1.5)                   *//*--------------------------------------------------------*/#include <stdio.h>#include <ctype.h>#include <string.h>#include "y.tab.h"#include "yaccdef.h"//#include "pcl.h"#define ret(r) { letter[0] = c; letter[1] = '\0';\                 yylval.set = letter;  return (r); }yylex(){  int c, c1;  int i = 0;  int sign;  long lval;  static char letter[max (MAXPATHLEN + 1, 257)];     /* maybe file name */  while ( (c = getc(yyin)) == ' ' || c == '\t');  if (c == '#') {   if ((c = getc(yyin)) == '#') {     if ((c1 = getc(yyin)) == '\n') return (TBREAK);     else ungetc(c1, yyin);   }  while ( c != '\n' && c != EOF) c = getc(yyin);  }  if (c == EOF) return (F_EOF);  if (c == '$') {    c = getc(yyin);    if (c == 'A') return (S_EUPPER);    if (c == 'a') return (S_ELOWER);    if (c == '1') return (S_DIGITS);    if (c == '!') return (S_SYMBOLS);    if (c == 'I') return (S_RUPPER);    if (c == 'i') return (S_RLOWER);    if (c == 'o') return (S_USER);    if (c == 's') return (S_SPECIAL);    if (c == 'p') return (S_USEDCHARS);    if (c == 'v') return (S_VOWELS);    if (c == 'w') return (WORD);    if (c == 'u') return (USER_WORD);    if (c == '?') return (ANY_LETTER);    yyerror ("Invalid macro");  }   if (c == '.') {    c = getc(yyin);    if (isdigit (c)) goto DIGIT;     switch (c) {      case 't': return (W_TRUNC);      case 'u': return (W_UPPER);      case 'l': return (W_LOWER);      case 'c': return (W_CONVERT);      case 'd': return (W_DUPLICATE);      case 'j': return (W_COOL);      case 's': return (W_CONSONANT);      case 'r': return (W_REVERSE);      default: yyerror ("Invalid modifier");     }    }    if (c == '\"') {      i = 0;      while ((c = getc (yyin)) != '\"') {        if (c == '\\') c = getc (yyin);        letter[i++] = c;      }      letter[i] = '\0';      yylval.set = letter; return (QSTRING);    }    if (c == '\\') {      c = getc(yyin);     if (isxdigit (c)) {       lval = 0;       while (isxdigit(c)) {         lval = lval * 16 + (isdigit(c) ? (toupper(c) - '0') :                                          (toupper(c) - 'A' + 10));         c = getc (yyin);       }       ungetc (c, yyin);       if (lval > 0xFF) yyerror ("Invalid hex number");       c = (int) lval;     }     if (c == 0) return (NULL_CHAR);     ret (LETTER);    }    if (c == '(') {      while ( (c = getc(yyin)) == ' ' || c == '\t');    if (c == '-') {      if ((c = getc(yyin)) == ')') { yylval.num = -1; return (NUMBER); }      sign = -1;    }    else sign = 1;    if (isdigit (c)) {DIGIT:     lval = 0;     while (isdigit(c)) {       lval = lval * 10 + (c) - '0';       c = getc (yyin);     }     while ( c == ' ' || c == '\t') c = getc (yyin);     if (c != ')') ungetc (c, yyin);     if (sign == -1) lval = -lval - 1;     yylval.num = (int) lval;//     if (lval == 0) yyerror ("Numbers must be greather than 0");     return (NUMBER);    }    else yyerror ("Invalid number");    }    if (c == '?' || c == '[' || c == ']'|| c == '\n' || c == '{' || c == '}'|| c == '*' || c == '=')       return (c);    ret (LETTER);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -