토큰 JavaCC에서 "문자를 제외하는 방법

Fran

안녕하세요 저는 JavaCC로 작업하고 있으며 ""사이에 하나의 문자열을 넣는 토큰을 작성 중입니다. 문맥:

void literalString(): {} { """ (characteresString())? """ }
void characteresString(): {} { <characterString> | characteresString() <characterString> }

그래서이 토큰을 하나의 문자열로 만들었습니다.

TOKEN : {<characterString : ~["\", "] >}

문제는 토큰에서 "기호를 제외하는 방법을 모른다는 것입니다." ""를 넣으면 오류가 발생하고 "오류를 다시 넣으면"오류가 발생합니다.

미리 감사드립니다

Theodore Norvell

대신에

void literalString(): {} { """ (characteresString())? """ }

토큰 정의 사용

TOKEN : { <STRING : "\"" (<CHAR>)* "\"" >
        | <#CHAR : ~["\""] > // Any character that is not "
}

이제 이것은 문자열을 a로 정의하고 "그 뒤에 "s 가 아닌 0 개 이상의 문자가 뒤 따르고 다른 ".

그러나 일부 언어에는 특정 범위의 문자 만 허용하는 것과 같은 추가 제한이 있습니다. 예를 들어 "허용되는 s를 제외한 인쇄 가능한 ASCII 문자 만 사용하는 경우

TOKEN : { <STRING : "\"" (<CHAR>)* "\"" >
        | <#CHAR: [" ","!","#"-"~"]> // Printable ASCII characters excluding "
}

그러나 "가 앞에 오는 경우 문자 를 허용 \하고 \뒤에 a "또는 다른 \또는 n. 그런 다음 사용할 수 있습니다.

TOKEN : { <STRING : "\"" (<CHAR> | <ESCAPESEQ>)* "\"" >
        | <#CHAR: [" ","!","#"-"[","]"-"~"] > // Printable ASCII characters excluding \ and "
        | <#ESCAPESEQ: "\\" ["\"","\\","n"] > // 2-character sequences \\, \", and \n
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관