2012-03-30 3 views
-1

나는이 작업을 수행하는 방법을 모른다, 나는이 작업을 수행하는 방법에 대한 온라인 좋은 자료를 발견했습니다 [합니다.] 나는 주석 EBNF 생산 규칙을하려고 해요 이는 두 개의 정규 표현식 사이의 차이점이며 (na | f?) lex 문법 명세 규칙 [.]으로 바꿉니다. 문제는 정상적으로 처리 할 방법이 없다는 것입니다. [3] 이 사용 Kleene 대수는 방법처럼 당신은[AF]? 렉스 정규 표현식 차이

답변

1

무엇 EBNF 생산 규칙이 생겼 [?]는 문맥 자유 문법에 교대로 빈 일치를 사용할 수 있습니다 (당신은 EBNF에 있음을 쓸 수?)

정규 표현식 간의 차이 집합 A\B은 동일합니다 A&~B : NT는 보완과 교차하는 B. 정규 표현식 언어에 어느 플렉스도 알렉스 지원 등의 의미가 일치하는 모든 문자열없는 A로 일치하는 문자열의 집합을.

이러한 형태의 표현은 여전히 ​​일반 언어이고, 따라서 일반 식에만 교대 Kleene 및 운영자에 기초하여 존재하는 상응하는 오토 마톤을 갖는다. 이 등식은 찾기 쉽지 않고 A와 B의 특정 내부 구조에 따라 달라집니다. 즉, A와 B를 일반적인 정규 표현식에 꽂을 수 없으므로 결과가 설정된 차이를 나타낼 수 없습니다. 원본 A와 B는 집합 차이 정규식에 나타나지 않습니다.

+0

나는 본다. XMLProcessingValue :: = <모든 xmlString을하지 않습니다 : 정보 주셔서 감사합니다 지금까지, 그것으로 인해 이와 같은 몇 가지 규칙에 Visual Basic의 그것을 구문 분석을 위해 정말 제공된 문법을 사용할 수없는 이유를 이해하는 데 매우 도움이 "?>"서면 EBNF 규칙이 될하지 않는 한 ...> 를 문자열을 포함 : "?>" XMLProcessingValue :: = xmlString을 \ 는 것을 잘인가? 나는 아직도 공식 언어의 메카닉을 처음 접했습니다. – user1303374

+0

EBNF는 형식적으로 정의 된 문법 작성 언어입니다 (Wikipedia에서 찾으십시오). 그것은 세트 차이에 대한 연산자가 없습니다. 문법 작성자는 표준 EBNF에서 표현할 수없는 것에 대한 비공식 영어를 삽입했습니다. – Kaz

+0

집합 보수 또는 교차 연산자없이 정규 표현식을 사용하여 'ab'와 같은 희미 그래프를 제외 할 수있는 방법이 있습니다. 즉,'(a * | [^ a] * | ([^ a] * (a [^ b]))) *) [^ b] *'와 같은 것입니다. 다시 말하면'a' 또는'a'가 아닌 모든 문자열, 또는'a'와'b'가 아닌'a'가 아닌 0 개 이상의 세그먼트를 모두 일치 시키면 이러한 모든 가능성의 조합이이'입니다 C 언어 주석의 스캔에서 제공 0 개 이상의 비 'b'의 – Kaz