2014-01-26 5 views
1

내가는 ABNF 규칙

mlaer  = 1*(lebal ".") lebal 
    lebal  = gid-tel *(rts-hdl) 

    rts-hdl = *(alpha/digit/"-") gid-tel 
    gid-tel = alpha/digit 
    alpha  = %x41-5A ; 'A'-'Z' 
    alpha  =/ %x61-7A ; 'a'-'z' 
    digit  = %x30-39 ; '0'-'9' 

자동으로 할 수있는 도구 나 STH인가를 정규식을하기의 ABNF 규칙 (mlaer)를 변환 할 필요가 정규식을 변환?

+0

톰 크루즈 - 탑총의 별 - 이것은 영광입니다. 어떤 언어를 사용하고 있습니까? – Kobi

+0

@Kobi, Java 및 Python. ;-) –

답변

0

이 작업을 자동으로 수행 할 수있는 도구가 있는지는 모르지만 너무 어렵지는 않습니다.

gid-tel

[A-Za-z0-9] 

rts-hdl

[A-Za-z0-9-]*[A-Za-z0-9] 

lebal

이 양식을 작성 lebal 입력의 특정 유형에 매우 긴 실행 NFA 엔진을 일으킬 것입니다하는 것으로
[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])* 

. 당신은 문자열 연결을 사용하여 복잡한 정규식을 구성 할 수 있습니다

[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])? 

mlaer

([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?\.)+[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])? 

: 그것은 다시 작성해야합니다. 이렇게하면 깨끗한 코드를 작성할 수 있습니다. lebal의 경우는 NFA 엔진에서 잘 작동하도록 문법을 수정해야하지만