누구 든지이 Antlr 2.0 문법 파일을 Antlr 3.0 구문으로 변환하도록 도와 줄 수 있습니까?

StackOverflow https://stackoverflow.com/questions/244936

  •  05-07-2019
  •  | 
  •  

문제

나는 '쉬운'부품 (조각, @header 및 @Member declerations 등)을 변환했지만, antlr을 처음 접했기 때문에 트리 진술 등을 변환하는 데 어려움을 겪고 있습니다.

나는 다음을 사용합니다 마이그레이션 가이드.

문법 파일은 여기에서 찾을 수 있습니다....

아래에서 문제가 발생하는 몇 가지 예를 찾을 수 있습니다.

예를 들어 다음과 관련하여 문제가 있습니다.

n3Directive0!:
                d:AT_PREFIX ns:nsprefix u:uriref
                {directive(#d, #ns, #u);}
                ;

또는

propertyList![AST subj]
        : NAME_OP! anonnode[subj] propertyList[subj]
        | propValue[subj] (SEMI propertyList[subj])?
        |               // void : allows for [ :a :b ] and empty list "; .".
        ;

propValue [AST subj]
        :  v1:verb objectList[subj, #v1]
                // Reverse the subject and object
        |  v2:verbReverse subjectList[subj, #v2]
        ;

subjectList![AST oldSub, AST prop]
        : obj:item { emitQuad(#obj, prop, oldSub) ; }
                (COMMA subjectList[oldSub, prop])? ;

objectList! [AST subj, AST prop]
        : obj:item { emitQuad(subj,prop,#obj) ; }
                (COMMA objectList[subj, prop])?
    | // Allows for empty list ", ."
    ; 
도움이 되었습니까?

해결책

n3Directive0!:
                d=AT_PREFIX ns=nsprefix u=uriref
                {directive($d, $ns, $u);}
                ;
  • 과제에는 '='를 사용해야합니다.
  • 그런 다음 토큰은 '$ tokenname.getText ()'로 사용할 수 있습니다.
  • 그런 다음 규칙 결과는 코드에서 'rulename.result'로 사용할 수 있습니다.
  • 결과 이름을 선언 한 규칙이있는 경우이 이름 ISO를 사용해야합니다.
    '결과'.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top