From: paf@fbit.msk.su (Alexander Petrosyan)
Organization: Firm F-Bit. Moskow. Russia.
>> Возникла задача, выбрать из массива строк, те строки которые
>> совпадают с шабоном по типу Парадокса. В шаблоне могут встречаться
>> метасимволы '..' - любое число любых символов
>> '@' - любой один символ Может кто-нибудь с этим встречался?
Лень пеpеводить на Pascal (sorry), но вот (надеюсь поймёте):
Alexander (AKA PAF).
--- GOLDED 2.41+
* Origin: Wherever you go... (paf@fbit.msk.su) (2:5020/200.25)
{> Cut here. FileName= MATCH.ASM }
.TITLE MATCH
;+
; MASK -> .ASCIZ / '*' - Matches null or more chars; '%' matches one char/
; STR -> .ASCIZ
;
; R1 = MASK
; R2 = STR
;
; Examples :
; MASK = "A*B%"
; STR = "ABX", "AOROROBM"; MATCH(MASK,STR) = 1
; STR = "AAB", "ORPOROBM"; MATCH(MASK,STR) = 0
;
; Петpосян Александp
;-
MATCH::
MOV R1,-(SP)
MOV R2,-(SP)
1$: MOVB (R1),R0
BISB (R2),R0
BEQ YES
MOVB (R1)+,R0
CMPB R0,#'*
BEQ 3$
CMPB R0,#'%
BEQ 4$
2$: TSTB (R2)
BEQ NO
CMPB R0,(R2)+
BNE NO
BR 1$
3$: TSTB (R1)
BEQ YES
CALL MATCH
BCC RET
TSTB (R2)+
BNE 3$
BR NO
4$: TSTB (R2)+
BEQ NO
BR 1$
NO: SEC
BR RET
YES: CLC
RET: MOV (SP)+,R2
MOV (SP)+,R1
RETURN
.END
|