Antlr3에 대한 렉서 규칙을 만들려고합니다. 삼중 인용 문자열과 일치합니다. 예를 들어 :ANTLR3 렉서 규칙에서 다중 문자 제외를 정의하는 방법은 무엇입니까?
"""this is some text"""
이 내가 그것을하고 있어요 방법은 다음과 같습니다
TEXT:
'"""' ('\\"' | ~'"')+ '"""'
{
this.setText(
this.getText()
.substring(3, this.getText().length() - 3)
.replace("\\\"", "\"")
);
}
;
잘 작동하지만 모든 작은 따옴표는 다음과 같이, 입력 텍스트에서 탈출해야합니다
:"""this is the same text, but with \"escaped quotes\" inside"""
나는 따옴표의 필수 이스케이프 처리를 제거하고 다음과 같이 트리플 인용 부호 사이에 아무 것도 (!) 구문 분석하려고합니다.
나는에 대한 규칙을 변경하기 위해 노력하고있어 573,977,:
TEXT:
'"""' (~'"""')+ '"""'
그리고 Antlr3 3.5 불평 :
error(100): Spec.g:153:13: syntax error: buildnfa: NoViableAltException([email protected][])
error(100): Spec.g:0:1: syntax error: buildnfa: MismatchedTreeNodeException(3!=29)
error(100): Spec.g:0:: syntax error: buildnfa: NoViableAltException([email protected][])
error(100): Spec.g:0:1: syntax error: buildnfa: MismatchedTreeNodeException(29!=28)
error(10): internal error: Spec.g : java.lang.NullPointerException
org.antlr.tool.NFAFactory.build_Aplus(NFAFactory.java:516)
...
에 어떤 문제가 있습니까? 가능한 해결 방법은 무엇입니까?
네가 맞아! 이것을 대답으로 바꾸면 받아 들일거야 – yegor256
좋아, 끝났어. ..... –