매우 간단해야합니다. ANTLR을 사용하는 렉서 문법에 대해 연구 중이며 변수 식별자의 최대 길이를 30 자로 제한하려고합니다. 나는 (- ''일을 제외하고 - 일반 정규식 다음 구문)이 줄을이 작업을 수행하려고 시도 : 코드 생성에서ANTLR Regex의 범위 한정 기호 구문
ID : ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'){0,29} {System.out.println("IDENTIFIER FOUND.");}
;
아니 오류,하지만 편집은 간단했다 생성 된 코드의 라인으로 인해 실패 :
0,29
은 분명히 ANTLR은 괄호 사이에 텍스트의 부분을 복용하고 인쇄 라인과 함께 동의 상태 영역에 배치된다. 필자는 ANTLR 사이트를 검색했는데 이에 상응하는 표현식에 대한 예나 참조를 발견하지 못했습니다. 이 표현식의 구문은 무엇이되어야합니까?
도움 주셔서 감사합니다. – user1634761
ANTLR이 프로그래밍 언어 용 컴파일러를 생성하는 데만 사용 된 경우 한정 기호에는 거의 사용되지 않을 수 있습니다. 그러나 구조화 된 데이터의 유효성을 검사하기위한 문법 (스키마)은 확실히 필요합니다. 신용 카드 번호는 13 또는 25가 아닌 16 자리입니다. ANTLR4 책에는 JSON 및 XML 문법이 있지만 기본 토큰 제약 없이는 ANTLR 문법은 JSON Schema 및 XSD의 추상 (코덱 독립적 인) 버전입니다. – Dave
"요즘에는 언어 식별자를 제한 할만한 이유가 거의 없습니다."- 제한된 식별자가있는 언어가 없거나 사람들이 파서를 쓸 수 있다는 것을 의미하지는 않습니다. –