나는이 작업을 수행하는 방법을 모른다, 나는이 작업을 수행하는 방법에 대한 온라인 좋은 자료를 발견했습니다 [합니다.] 나는 주석 EBNF 생산 규칙을하려고 해요 이는 두 개의 정규 표현식 사이의 차이점이며 (na | f?) lex 문법 명세 규칙 [.]으로 바꿉니다. 문제는 정상적으로 처리 할 방법이 없다는 것입니다. [3] 이 사용 Kleene 대수는 방법처럼 당신은[AF]? 렉스 정규 표현식 차이
-1
A
답변
1
무엇 EBNF 생산 규칙이 생겼 [?]는 문맥 자유 문법에 교대로 빈 일치를 사용할 수 있습니다 (당신은 EBNF에 있음을 쓸 수?)
정규 표현식 간의 차이 집합 A\B
은 동일합니다 A&~B
: NT는 보완과 교차하는 B. 정규 표현식 언어에 어느 플렉스도 알렉스 지원 등의 의미가 일치하는 모든 문자열없는 A로 일치하는 문자열의 집합을.
이러한 형태의 표현은 여전히 일반 언어이고, 따라서 일반 식에만 교대 Kleene 및 운영자에 기초하여 존재하는 상응하는 오토 마톤을 갖는다. 이 등식은 찾기 쉽지 않고 A와 B의 특정 내부 구조에 따라 달라집니다. 즉, A와 B를 일반적인 정규 표현식에 꽂을 수 없으므로 결과가 설정된 차이를 나타낼 수 없습니다. 원본 A와 B는 집합 차이 정규식에 나타나지 않습니다.
나는 본다. XMLProcessingValue :: = <모든 xmlString을하지 않습니다 : 정보 주셔서 감사합니다 지금까지, 그것으로 인해 이와 같은 몇 가지 규칙에 Visual Basic의 그것을 구문 분석을 위해 정말 제공된 문법을 사용할 수없는 이유를 이해하는 데 매우 도움이 "?>"서면 EBNF 규칙이 될하지 않는 한 ...> 를 문자열을 포함 : "?>" XMLProcessingValue :: = xmlString을 \ 는 것을 잘인가? 나는 아직도 공식 언어의 메카닉을 처음 접했습니다. – user1303374
EBNF는 형식적으로 정의 된 문법 작성 언어입니다 (Wikipedia에서 찾으십시오). 그것은 세트 차이에 대한 연산자가 없습니다. 문법 작성자는 표준 EBNF에서 표현할 수없는 것에 대한 비공식 영어를 삽입했습니다. – Kaz
집합 보수 또는 교차 연산자없이 정규 표현식을 사용하여 'ab'와 같은 희미 그래프를 제외 할 수있는 방법이 있습니다. 즉,'(a * | [^ a] * | ([^ a] * (a [^ b]))) *) [^ b] *'와 같은 것입니다. 다시 말하면'a' 또는'a'가 아닌 모든 문자열, 또는'a'와'b'가 아닌'a'가 아닌 0 개 이상의 세그먼트를 모두 일치 시키면 이러한 모든 가능성의 조합이이'입니다 C 언어 주석의 스캔에서 제공 0 개 이상의 비 'b'의 – Kaz