나는 구문 분석 할 필요가있는 소프트웨어로부터 (독점적 인) 결과를 얻었다. 안타깝게도 이스케이프 처리되지 않은 사용자 이름이 있으며 BNF (또는 EBNF 또는 ABNF)를 사용하여 구문 분석해야하는 파일을 설명 할 수 있는지 여부를 알기 위해 머리카락을 긁어 모으고 있습니다.이스케이프 처리되지 않은 사용자 이름이 BNF와 호환되지 않습니까?
문제, (정말 그냥 예입니다) 과도하게 단순화, 다음과 같이 보일 수 있습니다 :
(데이터) :: = < 이름 >
< 이름 > :: = (다른 데이터 타입)
어떤 경우에는 왼쪽 또는 오른쪽에 표시하는 대신 사용자 이름을 줄 중간에 표시 할 수도 있습니다.
문제는 사용자 이름이 이스케이프 처리되지 않고 사용자 이름에 제한이 없다는 것입니다. 인쇄 가능한 ASCII이며 최대 20 자이며 줄 바꿈을 포함 할 수 없습니다. 따라서 "="는 완벽하게 유효한 사용자 이름입니다 (예 :). 그리고 "= 1 = john = 2"(왜냐하면 사인 온시 사용자가 원하는 사용자 이름을 선택할 수있는 위치에 있기 때문에 출력에 이스케이프되지 않은 문자가 나타납니다).
내 파서가 매우 독창적 인 사용자 이름을 맹렬히 비난했기 때문에 묻습니다. (다시 한번 내 통제가 아니라 "이상한"이며 이에 대처해야합니다) 나는 쉽게 대처할 방법을 찾을 수 없습니다. 이. 또한 사용자 이름을 미리 알지 못합니다 (예를 들어 사용자가 만든 모든 사용자 이름을 포함하는 데이터베이스에 액세스 할 수 없음).
그래서 제한되지 않고 이스케이프되지 않은 사용자 이름이 BNF와 호환되지 않습니다?
P.S : 나는 실수를 만든 경우에 유래 : 내 첫 번째 게시물입니다, 나와 함께 멋진
사용자 이름이 언제 끝나는 지 어떻게 알 수 있습니까? –
@ Jason : 그 점이 다소 의문입니다. 입력을 정의하지 않았습니다. BNF/토크 나이저 방식을 사용하여 사용자 이름의 끝에 토큰을 실수 한 경우도 있고 반대의 경우도 있습니다.Eli와 mcdowella는 다음과 같이 대답했습니다. 기본적으로 BNF와 원하는 사용자 이름을 선택할 수있는 기능을 제공합니다. – SyntaxT3rr0r