Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Archivo: LexerGenerator.flex
- import java.util.ArrayList;
- %%
- %class Lexer
- %unicode
- %public
- %line
- %column
- %type Integer
- %state COMENTARIO
- %{
- public int currentLine = 1;
- public int currentColumn = 1;
- private ArrayList<String> identificadores = new ArrayList<>();
- public int getIdentificadorId(String lexema) {
- if (!identificadores.contains(lexema)) {
- identificadores.add(lexema);
- }
- return identificadores.indexOf(lexema);
- }
- %}
- LineTerminator = \r|\n|\r\n
- WhiteSpace = {LineTerminator} | [ \t\f]
- Identificador = [a-zA-Z_][a-zA-Z0-9_]*
- Entero = [0-9]+
- Decimal = {Entero}"."{Entero}
- %%
- <YYINITIAL> {
- // Palabras clave y símbolos básicos
- "if" { return sym.IF; } // IF = 1002
- "else" { return sym.ELSE; } // ELSE = 1003
- "for" { return sym.FOR; } // FOR = 1000
- "while" { return sym.WHILE; } // WHILE = 1001
- "switch" { return sym.SWITCH; }
- "do" { return sym.BUCLE_DO; }
- "foreach" { return sym.BUCLE_FOREACH; }
- "in" { return sym.IN; } // Token 1013
- "return" { return sym.RETORNO; }
- "true" { return sym.BOOLEANO_VERDADERO; } // Usar el nombre correcto
- "false" { return sym.BOOLEANO_FALSO; }
- "class"|"struct" { return sym.CLASE; }
- "extends"|"implements" { return sym.HERENCIA; }
- "interface"|"protocol" { return sym.INTERFAZ; }
- "public"|"private"|"protected" { return sym.MODIFICADOR_ACCESO; }
- "import"|"using"|"include" { return sym.IMPORTACION; }
- "package"|"namespace"|"module" { return sym.PAQUETE; }
- "function"|"def"|"fn" { return sym.FUNCION; }
- "return"|"yield" { return sym.RETORNO; }
- "new"|"delete"|"this" { return sym.INSTANCIA; }
- "const"|"final"|"readonly" { return sym.CONSTANTE; }
- "var"|"let"|"dynamic" { return sym.VARIABLE; }
- "break"|"continue"|"goto" { return sym.CONTROL_FLUJO; }
- "case"|"default" { return sym.CASE; }
- "async"|"await"|"thread" { return sym.CONCURRENTE; }
- "template"|"generics" { return sym.GENERICO; }
- "typedef"|"using" { return sym.ALIAS; }
- "@override"|"@deprecated" { return sym.ATRIBUTO; }
- "#define"|"#pragma"|"#include" { return sym.DIRECTIVA; }
- "array"|"list"|"tuple" { return sym.TIPO_COMPUESTO; }
- "enum"|"union" { return sym.ENUM; }
- // Operadores y símbolos
- "=" { return sym.ASIGNACION; }
- "+" { return sym.SUMA; }
- "(" { return sym.PARENTESIS_IZQ; }
- ")" { return sym.PARENTESIS_DER; }
- "-" { return sym.RESTA; }
- "*" { return sym.MULTIPLICACION; }
- "/" { return sym.DIVISION; }
- "%" { return sym.MODULO; }
- "++" { return sym.INCREMENTO; }
- "--" { return sym.DECREMENTO; }
- "&&"|"||"|"!" { return sym.OPERADOR_LOGICO; }
- "=="|"!="|">"|"<"|">="|"<=" { return sym.OPERADOR_COMPARACION; }
- "&"|"|"|"^"|"~"|"<<"|">>" { return sym.OPERADOR_BITWISE; }
- "="|"+="|"-="|"*="|"/=" { return sym.ASIGNACION; }
- "*"|"&"|"->" { return sym.PUNTERO; }
- "=>"|"lambda" { return sym.LAMBDA; }
- "{" { return sym.LLAVE_IZQ; }
- "}" { return sym.LLAVE_DER;}
- "[" { return sym.CORCHETE_IZQ;}
- "]" { return sym.CORCHETE_DER;}
- // Literales
- "true"|"false"|"null"|"undefined" { return sym.LITERAL; }
- // SQL
- "CREATE" { return sym.CREATE; } // Token 238
- "INSERT" { return sym.INSERT; } // Token 1010
- "UPDATE" { return sym.UPDATE; } // Token 1008
- "DELETE" { return sym.DELETE; } // Token 1007
- "SELECT" { return sym.SELECT; } // Token 1006
- "FROM" { return sym.FROM; } // Token 1005
- "WHERE" { return sym.WHERE; } // Token 1004
- "INTO" { return sym.INTO; } // Token 1003
- "DATABASE" { return sym.DATABASE; } // Token 239
- "TABLE" { return sym.TABLE; } // sym.TABLE = 240
- "ALTER" { return sym.ALTER; } // Token 1008
- "DROP" { return sym.DROP; } // Token 1009
- "SET" { return sym.SET; } // Token 1011
- "PRIMARY"({WhiteSpace})+"KEY" { return sym.PRIMARY_KEY; } // Token 243
- "BEGIN"|"COMMIT"|"ROLLBACK" { return sym.TRANSACCION; }
- "INNER JOIN"|"LEFT JOIN" { return sym.JOIN; }
- "ORDER"({WhiteSpace})+"BY"|"GROUP"({WhiteSpace})+"BY" { return sym.ORDEN; }
- "COUNT()"|"SUM()"|"AVG()" { return sym.FUNCION_SQL; }
- "WHERE"|"HAVING"|"LIMIT" { return sym.CLAUSULA; }
- "VARCHAR"|"INTEGER"|"DATE" { return sym.TIPO_DATO_SQL; }
- "ACID"|"TRANSACTION" { return sym.TRANSACCION_SEGURA; }
- "CREATE"({WhiteSpace})+"INDEX"|"DROP"({WhiteSpace})+"INDEX" { return sym.INDEX; }
- "CREATE"({WhiteSpace})+"VIEW"|"ALTER"({WhiteSpace})+"VIEW" { return sym.VISTA; }
- "BEFORE"({WhiteSpace})+"INSERT"|"AFTER"({WhiteSpace})+"UPDATE" { return sym.TRIGGER; }
- "CREATE"({WhiteSpace})+"USER"|"GRANT" { return sym.USUARIO; }
- "BACKUP"({WhiteSpace})+"DATABASE"|"RESTORE" { return sym.BACKUP; }
- "MAX()"|"MIN()"|"STDDEV()" { return sym.FUNCION_AGREGADA; }
- "JSON"|"JSONB" { return sym.TIPO_JSON; }
- "ADD" { return sym.ADD; }
- "int"|"float"|"string"|"bool" { return sym.TIPO_DATO; }
- "VALUES" { return sym.VALUES; }
- // -------------------------------
- // Web
- // -------------------------------
- "GET"|"POST"|"HTTP" { return sym.WEB; }
- "Set-Cookie"|"Cookie" { return sym.COOKIE; }
- "Content-Type"|"Authorization" { return sym.HEADER; }
- "@GetMapping"|"@PostMapping" { return sym.RUTA; }
- "app.use()"|"next()" { return sym.MIDDLEWARE; }
- "200 OK"|"404 Not Found" { return sym.ESTADO_HTTP; }
- "OAuth"|"JWT"|"Bearer" { return sym.AUTENTICACION; }
- "CORS"|"CSRF"|"XSS" { return sym.SEGURIDAD; }
- "document.getElementById()" { return sym.DOM; }
- "onclick"|"addEventListener" { return sym.EVENTO; }
- "Promise"|"async/await" { return sym.PROMESA; }
- "require()"|"export" { return sym.MODULO_JS; }
- "useState()"|"useEffect()" { return sym.HOOK; }
- "React.Component"|"@Component" { return sym.COMPONENTE; }
- "*ngIf"|"*ngFor" { return sym.DIRECTIVA_ANGULAR; }
- "[(ngModel)]"|"{{ }}" { return sym.BINDING; }
- "@Injectable()"|"@Service" { return sym.SERVICIO; }
- "RouterModule"|"@Route" { return sym.RUTEO; }
- "Redux"|"Vuex" { return sym.STORE; }
- "@Test"|"describe()" { return sym.TEST; }
- "Mockito"|"jest.fn()" { return sym.MOCK; }
- "assertEquals()"|"expect()" { return sym.ASSERTION; }
- "coverage"|"istanbul" { return sym.COVERAGE; }
- "Dockerfile"|"FROM" { return sym.CONTENEDOR; }
- "docker-compose"|"k8s" { return sym.ORQUESTACION; }
- "AWS"|"S3"|"Lambda" { return sym.CLOUD; }
- "Jenkinsfile"|".gitlab-ci.yml" { return sym.CI_CD; }
- "git commit"|"git push" { return sym.VERSIONADO; }
- "main"|"develop"|"feature/" { return sym.BRANCH; }
- "git merge"|"rebase" { return sym.MERGE; }
- "<<<<<<<"|"=======" { return sym.CONFLICTO; }
- "pre-commit"|"post-receive" { return sym.HOOK_GIT; }
- "REST"|"GraphQL"|"gRPC" { return sym.API; }
- "/users"|"/products" { return sym.ENDPOINT; }
- "?page=1"|"&sort=asc" { return sym.QUERY_PARAM; }
- "JSON"|"form-data" { return sym.BODY_REQUEST; }
- "ws://"|"onmessage" { return sym.WEBSOCKET; }
- "Buffer.alloc()"|"ArrayBuffer" { return sym.BUFFER; }
- "Readable"|"Writable" { return sym.STREAM; }
- "fs.readFile()"|"open()" { return sym.ARCHIVO; }
- "chmod"|"rwx" { return sym.PERMISO; }
- "/home/user"|"C:\\" { return sym.RUTA_ARCHIVO; }
- "console.log()"|"log4j" { return sym.LOG; }
- "debugger"|"breakpoint" { return sym.DEBUG; }
- "profiler"|"benchmark" { return sym.PERFORMANCE; }
- "malloc"|"gc.collect()" { return sym.HEAP; }
- "stack overflow"|"push/pop" { return sym.STACK; }
- "GC"|"refcounting" { return sym.GARBAGE_COLLECTOR; }
- "pthread_create()"|"ThreadPool" { return sym.HILO; }
- "sem_wait()"|"sem_post()" { return sym.SEMAFORO; }
- "mutex_lock()"|"wait/notify" { return sym.DEADLOCK; }
- "pipe()"|"shared_memory" { return sym.IPC; }
- "SIGINT"|"SIGTERM" { return sym.SENAL; }
- "fork()"|"nohup" { return sym.DAEMON; }
- "bind()"|"listen()" { return sym.SOCKET; }
- "TCP"|"UDP"|"HTTP/2" { return sym.PROTOCOLO; }
- "AES"|"RSA"|"SSL" { return sym.ENCRIPTACION; }
- "SHA-256"|"MD5" { return sym.HASH; }
- "CSRF_TOKEN"|"nonce" { return sym.TOKEN_SEGURO; }
- "HttpOnly"|"Secure" { return sym.COOKIE_HTTP_ONLY; }
- "sanitize()"|"escape()" { return sym.XSS; }
- "preparedStatement"|"ORM" { return sym.SQLI; }
- "npm install"|"pip install" { return sym.DEPENDENCY; }
- "package.json"|"node_modules" { return sym.PAQUETE_NPM; }
- ".jar"|".war"|".dll" { return sym.ARTIFACT; }
- "npm registry"|"Maven Central" { return sym.REGISTRY; }
- "1.2.3"| "^2.0.0" { return sym.VERSION_SEM_VER; }
- "ESLint"|"Pylint" { return sym.LINTER; }
- "Prettier"|"Black" { return sym.FORMATTER; }
- "Webpack"|"Rollup" { return sym.BUNDLER; }
- "uglify-js"|"terser" { return sym.MINIFICACION; }
- "core-js"|"babel-polyfill" { return sym.POLYFILL; }
- "Babel"|"TypeScript" { return sym.TRANSPILADOR; }
- ": string"|"interface" { return sym.TYPE_ANNOTATION; }
- "<T>"|"extends keyof" { return sym.GENERICO_TS; }
- "@Decorator"|"experimentalDecorators" { return sym.DECORADOR_TS; }
- "namespace"|"declare module" { return sym.NAMESPACE_TS; }
- "Partial<T>"|"Pick<T>" { return sym.UTILITY_TYPES; }
- "never"|"unknown" { return sym.NEVER_TYPE; }
- "T extends U ? X : Y" { return sym.CONDICIONAL_TYPE; }
- "{ [K in keyof T]: ... }" { return sym.MAPPED_TYPE; }
- "`Hello ${name}`" { return sym.TEMPLATE_LITERAL; }
- "as"|"!" { return sym.ASERCION; }
- "const enum"|"declare enum" { return sym.CONST_ENUM; }
- "implements A"|"B"|"mixin" { return sym.HERENCIA_MULTIPLE; }
- "function overload"|"@overload" { return sym.SOBRECARGA; }
- "Singleton"|"Factory" { return sym.PATRON; }
- "@Inject"|"Dependency Injection" { return sym.INYECCION; }
- "@FeignClient"|"@KafkaListener" { return sym.MICROSERVICIO; }
- "application.properties"|".env" { return sym.CONFIG; }
- "process.env"|"os.getenv()" { return sym.VARIABLE_ENTORNO; }
- "-h"|"--version"|"--help" { return sym.CLI; }
- "argv"|"args" { return sym.ARGUMENTO; }
- "--force"|"--dry-run" { return sym.FLAG; }
- "|>" { return sym.PIPELINE; } // Suponiendo que el operador pipeline es "|>"
- "2>&1"|" >> log.txt" { return sym.REDIRECCION; }
- "~"|"VAR"|"VAR"|"{VAR}" { return sym.EXPANSION; }
- "*.txt"|"?" { return sym.COMODINES; }
- "^[A-Z]"|"\\d{3}" { return sym.EXPRESION_REGULAR; }
- "<<EOF"|"EOF" { return sym.HEREDOC; }
- "alias ll='ls -l'" { return sym.ALIAS_SHELL; }
- "function greet() { ... }" { return sym.FUNCION_SHELL; }
- "trap"|"EXIT" { return sym.TRAP; }
- "jobs"|"fg"|"bg" { return sym.JOB_CONTROL; }
- "SIGKILL"|"SIGSTOP" { return sym.SENAL_SHELL; }
- "$( ... )"|"` ... `" { return sym.SUBSHELL; }
- "arr=(1 2 3)"|"${arr[@]}" { return sym.ARREGLO_BASH; }
- "if [ -f file ]; then ..." { return sym.CONDICIONAL_SHELL; }
- "for i in {1..10}; do ..." { return sym.BUCLE_SHELL; }
- "case $var in ... esac" { return sym.CASE_SHELL; }
- "BEGIN"|"END"|"NR" { return sym.FUNCION_AWK; }
- "s/old/new/g"|"-i" { return sym.COMANDO_SED; }
- "$1 > 10"|"{ print $2 }" { return sym.EXPRESION_AWK; }
- "ggplot2"|"matplotlib" { return sym.PLOT; }
- "pandas"|"DataFrame" { return sym.DATA_FRAME; }
- "datetime"|"resample()" { return sym.SERIE_TEMPORAL; }
- "mean()"|"std()" { return sym.ESTADISTICA; }
- "fit()"|"predict()" { return sym.ML; }
- "tf.Tensor"|"torch.tensor()" { return sym.TENSOR; }
- "Dense"|"Conv2D" { return sym.RED_NEURONAL; }
- "Adam"|"SGD" { return sym.OPTIMIZADOR; }
- "MSE"|"CrossEntropy" { return sym.LOSS; }
- "cuda()"|"to('cuda')" { return sym.GPU; }
- "Dataset"|"DataLoader" { return sym.DATASET; }
- "StandardScaler"|"MinMax" { return sym.NORMALIZACION; }
- "Pipeline"|"ColumnTransformer" { return sym.PIPELINE_ML; }
- "cross_val_score"|"KFold" { return sym.VALIDACION; }
- "accuracy"|"F1-score" { return sym.METRICA; }
- "KMeans"|"DBSCAN" { return sym.CLUSTERING; }
- "LinearRegression"|"Ridge" { return sym.REGRESION; }
- "LogisticRegression"|"SVM" { return sym.CLASIFICACION; }
- "DecisionTree"|"RandomForest" { return sym.ARBOL; }
- "XGBoost"|"LightGBM" { return sym.BOOSTING; }
- "Tokenizer"|"BERT" { return sym.NLP; }
- "Word2Vec"|"GloVe" { return sym.EMBEDDING; }
- "OpenCV"|"YOLO" { return sym.CV; }
- "Tesseract"|"pytesseract" { return sym.OCR; }
- "Flask"|"Django REST" { return sym.API_REST; }
- "type Query"|"resolver" { return sym.GRAPH_QL; }
- "wasm"|"WebAssembly.instantiate()" { return sym.WEB_ASSEMBLY; }
- "Smart Contract"|"Solidity" { return sym.BLOCKCHAIN; }
- "ERC20"|"approve()" { return sym.TOKEN_ERC20; }
- "ERC721"|"mint()" { return sym.NFT; }
- "Metamask"|"Private Key" { return sym.WALLET; }
- // sintáctico
- "try" { return sym.TRY; } // Token 236
- "catch" { return sym.CATCH; } // Token 237
- "class" { return sym.CLASS; } // Token 235
- // Comentarios
- "/*" { yybegin(COMENTARIO); }
- "//".* { /* Ignorar comentarios de línea */ }
- // Manejo de saltos de línea PRIMERO
- {LineTerminator} { currentLine++; currentColumn = 1; }
- // Espacios en blanco (sin incluir saltos de línea)
- {WhiteSpace} { /* Ignorar espacios */ }
- // Identificadores y literales
- {Identificador} { return sym.IDENTIFICADOR; }
- // Literales (números y strings)
- {Entero} { return sym.VALOR; } // Entero como VALOR
- {Decimal} { return sym.VALOR; } // Decimal como VALOR
- \"[^\"]*\" { return sym.VALOR; } // String como VALOR
- // Manejo de errores
- . { return sym.ERROR; }
- }
- <COMENTARIO> {
- "*/" { yybegin(YYINITIAL); }
- [^*]+ { /* Ignorar contenido */ }
- "*" { /* Ignorar asteriscos */ }
- }
- <<EOF>> { return null; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement