2016-11-19 1 views
2

저는 ANTLR을 사용하기 시작했으며, plsql.g4 문법을 사용하여 간단한 PL/SQL 문을 구문 분석하는 테스트를 시도하려고합니다. Getting Started with ANTLR v4에 사용 된 형식을 따르고 있습니다. ANTLR4에 포함 된 PL/SQL 문법은 어떻게 테스트 할 수 있습니까?

다음 명령

는 문제없이 실행 :

antlr4 plsql.g4 
java org.antlr.v4.Tool plsql.g4 
javac plsql*.java 

은 시작 예, 그들은 다음 명령을 실행 : '안녕하세요'는 문법과 'R의 이름입니다

grun Hello r -tree 

을 '는 생산 규칙 중 하나입니다.

sql_script 
    : (unit_statement | sql_plus_command)* EOF 
    ; 

그래서 내가 그렇게 같은 PL/SQL 파서를 호출하려고 : 문법은 'sql_script'생산 규칙이 입력 스트림의 마지막에 다음에 0 개 이상의 단위 진술 또는 SQLPLUS 명령으로 구성되어 있음을 나타냅니다 : 간단한 PL/SQL의에 대한 파스 트리를 생성하기 위해이 문법 파서를 호출하는 올바른 방법을 무엇

Can't load plsql as lexer or parser 

:

grun plsql sql_script -tree 

는 그러나 나는 다음과 같은 오류가 발생합니다 발언? JDK 8을 Windows 컴퓨터에서 사용하고 있습니다. 다음은 내 터미널 창의 내용을 보여주는 screenshot입니다.

+1

나는 모든 명령을 실행 했으므로 모든 것이 작동합니다! 나는'plsqlLexer.class' 파일을 삭제할 때 오류를 재현 할 수 있습니다. 'plsqlLexer.class'와'plsqlParser $ *. class' 파일이있는 디렉토리에서'grun plsql sql_script -tree' 명령을 실행 하시겠습니까? – Quepas

+0

예. 다음은 내 터미널 창의 내용을 보여주는 [screenshot] (http://imgur.com/9EIfkuh)입니다. – Dyndrilliac

+0

스크린 샷 :'ls' 명령으로 나열된'plsqlParser $ * .class' 파일이 모두 작은 따옴표로 묶여있는 이유는 무엇입니까? – Quepas

답변

0

JVM이 원인입니다. 존재하는 경우 시스템 전체 % CLASSPATH % 환경 변수를 확인하기 전에 작업 디렉토리를 먼저 자동으로 확인하지 않습니다. '.'추가 % CLASSPATH % 환경 변수의 시작 부분에서 문제가 수정되고 명령이 의도 한대로 작동 할 수 있습니다. Windows 10의 환경 변수 편집 도구 인이 screenshot을 참조하여 모양을 확인하십시오.

이 도구는 제어판 -> 시스템 및 보안 -> 시스템을 통해 액세스 할 수 있습니다. 왼쪽의 "고급 시스템 설정"항목을 클릭 한 다음 "환경 변수"버튼을 클릭하십시오. 변수를 선택하고 "편집 ..."버튼을 클릭하면 스크린 샷에 도구가 나타납니다.

+0

변경 사항이 없습니다. 저는 1997 년부터 자바를 사용 해왔고 항상 이와 같이 일해 왔습니다. '.'은 전혀없는 경우 기본 CLASSPATH이지만, 자동으로 존재하지 않는다면 자동으로 절대로 사용하지 않습니다. – EJP

+0

@EJP 제 생각에는 JVM 구현과 관련된 동작입니다. 예를 들어, OpenJDK가 그런 식으로 작동한다는 것을 기억하지 못합니다. – Dyndrilliac

+0

@ EJP 나는 행동의 변화에 ​​책임을 돌리지 말고 단순히 현재의 행동을 간단히 설명하기 위해 대답의 표현을 바꾸었다. 어느 쪽이든, 이것은 정답입니다. 질문을 한 사람으로서, 이것이 이것이 문제의 해결책이라고 확신 할 수 있습니다. 나는 당신이 당신의 downvote를 철회하는 경우에 그것을 평가할 것입니다. – Dyndrilliac