나는 CFG 세트를위한 파서를 작성 중이다. (참고 : RHS는 만 할 수 있습니다 대문자)를 포함하는 /*, 여기이 분명히 어떤 가장자리 케이스를 놓친 */ void
start():
{
}
{
(
<UPPER_CHAR>
<ARROW>
<STRING>
(<PIPE> <STRING>)*
)*
}
if 문을 javacc에 작성하고 조건이 false 인 경우 본문을 무시하는 방법을 모르겠 음 먼저 두 객체 클래스 토큰 및 부울 변수를 선언하고 다음으로 return method condition(), next 조건이 거짓 일 때 나머지 블록을 건너 뛰고 싶습니다. 그렇게하는 방법? void ifElse() :
{
Token s
JavaCC를 사용하는 법을 배우려하고 정규 표현식에 대한 지원이 있다는 것을 깨달았습니다. TOKEN : { < #DIGITS : (\d)+ >}
하지만 "컴파일러 컴파일러" TOKEN : { < #DIGITS : (["0" - "9"])+ >}
내가 같은 속기 문자 클래스를 사용하여 시도 : 게으른 전화 해하지만 난 자리를 정의하는 기본/일반적인
javacc을 사용하여 추상 구문 트리를 빌드하고 있습니다. 우리는 Parser.jj 프로그램에 의해 호출되는 많은 클래스들을 자바로 구현했다. 그러나 Parser.jj는 동일한 폴더/패키지에 있어도 구현 된 클래스를 인식하지 못합니다 (예 : 오류 : 심볼을 찾을 수 없음 : VariableNode 클래스). Parser.jj에서 해당 파일을 인식하도록
저는 현재 학사 프로젝트의 일환으로 포커 손 역사 파서를 연구 중입니다. 저는 지난 며칠 동안 약간의 연구를 해왔고 몇 가지 훌륭한 파서 생성기를 보았습니다 (프로젝트 자체는 Java로 코딩되기 때문에 JavaCC를 선택했습니다). 핸드 히스토리 문법이 매우 기본적이고 간단하지만, 플레이어의 닉네임에 허용 된 문자 집합으로 인해 모호성 문제가 있습니다. 가
JavaCC를 사용하여 문자열을 다른 토큰과 잘못 비교하지 않고 구문 분석하는 좋은 방법을 생각하고 있습니다. 이 문자열은 공백, 문자 및 숫자를 포함 할 수 있어야합니다. 다음과 같이 내 식별자 및 숫자 토큰은 다음과 같습니다 <IDENTIFIER: (["a"-"z", "A"-"Z"])+>
<NUMBER: (["0"-"9"])+>
나의 현재 문자열
에 적용되는 I했습니다 TOKEN:{
<CONSTANT:(<DIGIT>)+>
| <ID:<LETTER>(<LETTER> | <DIGIT>)*>
| <#DIGIT:["0"-"9"]>
| <#LETTER:["a"-"z","A"-"Z","_"]>
}
가 지금은 현재의 토큰이 ID 또는 상수 public class eg1
나는 JavaCC를 사용하는 간단한 언어에 대한 파서를 연구 중이다. 내 토큰 선언 섹션에서 , 나는 인해 주문이 < CONSTANT: <INTEGER> | <FLOAT_NUMBER> | <BOOLEAN> >
< INTEGER: "0" | ("-")? ["1"-"9"](["0"-"9"])* | "0x" (["0"-"9"] | ["a"-"f"] | ["A