0
다음 BNF 문법을 ANTLR에 쓰려면 어떻게해야합니까? 예를 들어 {6}\r\nLENGTH
ANTLR 길이 접두사가있는 리터럴 문자열의 문법
literal = "{" number "}" CRLF *CHAR8
; Number represents the number of CHAR8s
"LENGTH"
는 캐릭터에 매핑되어야한다.
다음 작업을 수행 할 예정입니까?
literal:
| '{' ('0'..'9')+ '}\r\n'
{
// C# Code for Lexer
Text = Text.Trim();
int n = int.Parse(Text.Substring(1,Text.Length-2));
Text = "";
for(int i=0;i<n;i++){
input.Consume();
}
}
;
가 나는 렉서 규칙과이 작업을 얻고 있지만, 문제는 내가 일치하지 않는 토큰을 얻고, 내가 토큰으로 문자 받고 있지 않다. 이 솔루션은 제대로 작동
2 단계에서이 작업을 수행 할 수 있습니까? 예 : 왼쪽에있는 숫자와 오른쪽에있는 문자열이 같은 길이인지 두 번 확인합니다. – user7116
나는 ANTLR에 대해 많이 알지 못한다. 나는 그 생성 된 C#을 보았고, 이것을 기반으로 작성했다. 문제는 LeaveRule 등의 메소드가 거의 없다는 것을 알기 때문에, 내 마지막 것이 무엇인지 알고 싶다. 성명서? LeaveRule()을 호출해야합니다. –
@ SwDevMan81 왜 C#이 여기에서 제거 되었습니까? ANTLR 문법의 목표 언어는 C# –