0
기본 ANTLR 기반 검색을 수행하려고합니다. 원하는 토큰과 일치하지 않는 렉서에 문제가 있습니다. 상기 문법 렉서가 토큰을 건너 뜁니다.
lexer grammar DefaultLexer;
ALPHANUM : (LETTER | DIGIT)+;
ACRONYM : LETTER '.' (LETTER '.')+;
HOST : ALPHANUM (('.' | '-') ALPHANUM)+;
fragment
LETTER : UNICODE_CLASS_LL | UNICODE_CLASS_LM | UNICODE_CLASS_LO | UNICODE_CLASS_LT | UNICODE_CLASS_LU;
fragment
DIGIT : UNICODE_CLASS_ND | UNICODE_CLASS_NL;
는
hello. world
world
문자열 만의 입력 결과로 주어진다. 반면에 나는
hello
과 을 모두 얻을 것으로 예상됩니다. 내가 뭘 놓치고 있니? 감사.
ADDED :
좋아, 내가 ALPHANUM 이상의 규칙 HOST를 사용하여 입력 hello. world
경기 이상의 문자를 따라서 렉서이 그것을 사용하도록 선택하는 것을 배웠습니다. 그런 다음 입력을 HOST 규칙과 일치시키지 못하면 "룩백"하지 않습니다. 이는 렉서가 작동하는 방식이기 때문입니다.
나는 어떻게해야합니까?
좋아, 나는 antlr4 시도해 줄 것이다. –
antlr4를 사용하여 C#을 생성 할 수 없습니다. https://github.com/sharwell/antlr4cs에 따라 프로젝트를 수정 한 후 빌드 도중 '오류 \t 16 알 수없는 빌드 오류 : 오류 : 기본 클래스 Studio를 찾을 수 없거나로드 할 수 없습니다.'라는 메시지가 나타납니다. 그리고 antlr4-csharp-4.0.1-SNAPSHOT-complete.jar를 명령 줄에서 수동으로 실행하려고하면 Java 클래스가 생성됩니다. –
좋아, 나는 msbuild 작업에서 사용할 동일한 매개 변수를 사용하여 명령 줄에서 C#을 생성 할 수있었습니다. 빌드시 왜 작동하지 않는지는 아직 알 수 없습니다. –