home *** CD-ROM | disk | FTP | other *** search
- [EDIT.CNV]
- [Gerardo Cisneros, 13.9.89]
- [Copyright (c) 1989 - Gerardo Cisneros]
- [DERECHOS RESERVADOS]
-
- [selector de ordenes]
- (()()(0)(
- (<>,(L)):
- ((and,(or,b,d,p),<0>) <--> ,(%t,<0> no lleva mas de 1 argumento)):
- ((and,(or,m,t),<0>) <[1]>,(%t,<0> no lleva argumentos)):
- (b(or, <0>,<><0>),<<
- >>(IF,(8),(S,<0>),(and,(or,<-->:,)(ITR,<-->\),<8>),<<
- >>(O,(until,(%S,(S,(if,<0>,(or,<:g:>,)<>,<=>*.*))),<<
- >>Not Found,<<
- >>(IF,(0),<=>,<[9]><0>,<0>(^@)),<<
- >>(%A),)))):
- (d(or, <0>,<><0>),<<
- >>(if,(until,(%S,(S,(if,<0>,(or,<:g:>,)<>,<=>*.*)),16),<<
- >>Not Found,<<
- >>(IF,(0),<=>,(^P)<[8]><0>,<0>\(^@),<<
- >><=>,<[9]><0>,<0>(^@)),<<
- >>(%A),),<>,(%t,No se encontraron),(D,<=>))):
- (e<>,(E)):
- (e <0>,(WHILE,(0 1),<0> ,<0> <1>,(E,<0>),<1>)):
- (l <0>,(WHILE,(0 1),<0> ,<0> <1>,<<
- >>(IF,(8),(S,<0>),(and,(or,<-->:,)(ITR,<-->\),<8>),<<
- >>(until,(%S,(S,<0>)),Not Found,<<
- >>(IF,(0),<=>,<[9]><0>,<<
- >>(%t,:::::::::: <8><0> ::::::::::)(T)),<<
- >>(%A),)),<1>)):
- (m,(%t,(if,(%r,ARR:pfx[1]),<>,(%Lr):))):
- (p(or, <0>,<><0>),<<
- >>(if,(&u,<0>),<>,(%W,ARR:pfx[1]),<<
- >><=>,<:g:><>,(X,<=>),<<
- >><=>\,<:g:><>,(X,<=>),<<
- >>(%t,<0> no reconocido como prefijo))):
- (t,Fin);
- (?,(%t,b [arch] borra archivos(^MJ)<<
- >>d [arch] lista archivos existentes(^MJ)<<
- >>e [arch ...] edita uno o mas archivos(^MJ)<<
- >>l [arch ...] lista contenido de archivos(^MJ)<<
- >>m muestra prefijo en uso(^MJ)<<
- >>p [dir] indica prefijo a usar(^MJ)<<
- >>t termina la corrida(^MJ)<<
- >>? muestra esta lista)):
- (,(%t,Orden desconocida; ? da instrucciones)):
- )) C
-
- [verifica directorios]
- (()()(0)(
- (<0>,(if,(%Or,<0>X.$$$)(,(%C,<0>X.$$$)),<>,(%W,ARR:pfx[1],<0>),<<
- >>(if,(%Ow,<0>X.$$$)(,(%C,<0>X.$$$)(%D,<0>X.$$$)),<>,<<
- >>(%W,ARR:pfx[1],<0>),(%t,<0>: prefijo ilegal))));
- )) X
-
- [ejecutor]
- (()()()(
- (0,(%Or,MEM:path)<<
- >>(WHILE,(0 1),(%r,MEM:path),(NOT,(^X))<0>;<1>,,<<
- >>(if,(%Or,<0>SCR.REC)(,(%C,<0>SCR.REC)),<>,<<
- >>(^X)(%V,<0>SCR,(Q))(%W,ARR:frst[1],1),<1>),<<
- >>(IF,(0),<=>,(^X)<0>,<0>,(%t,No encuentro SCR.REC))));
- (1,( ,(Q)));
- )) V
-
- [editor de texto]
- (()()()(
- (<>,(IF,(29),(S,(if,(F),<>,(G))),<29>,(%t, ... editando <29>)<<
- >>(if,(if,(%Or,<29>)(K),<[1]>,(%Ow,<29>)(K)(,(%D,<29>))),<>,<<
- >>(if,<29><,>(V,(%r,ARR:frst[1])),<29><,><>,,<<
- >>(,(%W,<=>(,(%D,(B,<29>))(%N,(B,<29>)<,><29>))<<
- >>(nf,(%Ow,<29>),<>,(%t,No puedo escribir <29>))))(K)),<<
- >>(%t,No puedo crear <29>))));
- (<:n:><>,(M,<=>)):
- (,(%t,<=>: nombre ilegal));
- )) E
-
- [despliega los archivos solicitados]
- (()()(0 1 2)(
- ((and,<[60]> ,<0>)<1>(^@)<2>,(%t,<0><1>)<2>):
- (<0>(^@)<1>,(IF,(0),<0> ,(and,(ITR,<[16]>),<0>),<0>)<1>):
- (<>,);
- (,(%t,<=>));
- )) D
-
- [borra, pidiendo confirmacion para cada archivo]
- (()()(1 2)(
- (<>,);
- (<1>(^@)<2>,<<
- >>(if,(&l,(%r,TTY:Borro <8><1>? <(>si/no/abandona/muestra<)> )),<<
- >>s,(%D,<8><1>)<2>,<<
- >><=>,a,,<<
- >><=>,m,(%Or,<8><1>)<<
- >>(%t,(&p,(%r,<8><1>,<[70]>)))<<
- >>(%C,<8><1>)<1>(^@)<2>,<<
- >><=>,n,(%t,Conservado)<2>,<<
- >><1>(^@)<2>)):
- )) O
-
- [programa principal]
- ((
- [PATRONES:]
- [Una letra]
- ((or,(IVL/A/Z/),(IVL/a/z/))) l
- [Un caracter valido para nombre de archivo]
- ((or,<:l:>,(IVL/0/9/),$,&,#,%,<'>,<(>,<)>,-,@,^,{,},~,`,!)) h
- [Uno o mas caracteres validos]
- (<:h:>(ITR,<:h:>)) s
- [Nombre valido (con extension, si la hay)]
- ((and,<:s:>,(NOT,<[9]>))(or,.(and,(ITR,<:h:>),(NOT,<[4]>)),)) f
- [Prefijo valido]
- ((or,<:l:>:,)(or,\,)(ITR,(or,..,.,<:f:>)\)) g
- [Trayectoria valida]
- (<:g:><:f:>) n
- [Blancos: espacio o tabulador]
- ((or, ,(^I))) b
- [Uno o mas blancos]
- (<:b:>(ITR,<:b:>)) w
- )(
- [ESQUELETOS:]
- [Lee nombre del archivo actual]
- ((%r,ARR:file[1])) F
- [Agrega prefijo si no comienza con \ o x:]
- ((nf,(&u,<=>),(or,<:l:>:,\),(%r,ARR:pfx[1])<=>)) S
- [Lee del teclado un nombre de archivo]
- ((while,,<>,,(if,(&u,(%r,TTY:Nombre del archivo: )),<:n:>,<=>(M,<=>),<<
- >>(%t,Nombre ilegal)))) G
- [Lee una orden, elimina blancos sobrantes]
- ((WHILE,(0 1),(%r,TTY:edit(>) ),<0><:b:><:w:><1>,<0>(nf,<1>,<>, ),<1>)) L
- [Copia a la pantalla un archivo, linea por linea]
- ((if,(%Or,<8><0>),<>,<<
- >>(until,(%r,<8><0>),(^Z),(%t,<=>),(%r,<8><0>),),)<<
- >>(,(%C,<8><0>))) T
- [Lee un archivo entero, para editarlo]
- ((if,(%Or,<29>),<>,<<
- >>(until,(%r,<29>),(^Z),<=>(^J),(%r,<29>),),)(K)) Q
- [Cierra el archivo de trabajo, no reporta diagnosticos]
- ((,(%C,<29>))) K
- [Cambia a .BAK la extension del nombre de archivo ligado a <29>]
- ((IF,(0),<29>,<<
- >>(and,(or,<:l:>:,)(or,\,)(ITR,<:f:>\)<:s:>,<0>),<<
- >><0>.BAK)) B
- [Registra el nombre del archivo actual]
- ((%W,ARR:file[1],(&u,<=>))) M
- [Agrega \ al final de subdirectorios de PATH]
- ((WHILE,(0 1),<=>,<0>;<1>,(if,<0>,<:g:><>,<=>;,<=>\;),<1>)) Z
- [Guarda la variable del entorno "PATH", crea espacio
- para el nombre actual de archivo y el prefijo a usar]
- ((IF,(0),;AUTLIB\;(IF,(0),<30>,<-->PATH=<0>(^@),(Z,<0>;),)(^M),<0>,<<
- >>(%Ow,MEM:path,(&!,<0>))(%W,MEM:path,<0>))<<
- >>(%Ow,ARR:file,1,100)(%Ow,ARR:pfx,1,100)<<
- >>(%Ow,ARR:frst,1,2)(%W,ARR:frst[1],0)<<
- >>(%t,EDIT.CNV(^MJ)<<
- >>Copyright <(>c<)> 1989 - Gerardo Cisneros(^MJ)<<
- >>DERECHOS RESERVADOS(^MJ))<<
- >>(,(%r,TTY:Oprima (<)return(>) para continuar ))) P
- )()(
- (<>,(P)(M)(C,?));
- (,(P)(M)(C,e <=>));
- ))
-
- [fin]