당신의 문법 :
grammar Test;
sentence_with_int
: sentence {System.out.println("Parsed: sentence='"+$sentence.text+"'");}
INT {System.out.println("Parsed: int='"+$INT.text+"'");}
;
sentence
: (ANY_WORD | INT)+
;
ANY_WORD
: ('a'..'z' | 'A'..'Z')+
;
INT
: ('0'..'9')+
;
WS
: (' ' | '\t' | '\r' | '\n') {$channel=HIDDEN;}
;
는 정확히 않습니다. 여기에 약간의 테스트 장치입니다 :
java -cp antlr-3.2.jar org.antlr.Tool Test.g
을 모든 .java
소스 파일을 컴파일 :
import org.antlr.runtime.*;
public class Demo {
public static void main(String[] args) throws Exception {
ANTLRStringStream in = new ANTLRStringStream("the number of size 14 shoes bought was 3");
TestLexer lexer = new TestLexer(in);
CommonTokenStream tokens = new CommonTokenStream(lexer);
TestParser parser = new TestParser(tokens);
parser.sentence_with_int();
}
}
먼저 파서 & 렉서를 생성 (모든 파일을 가정하고, ANTLR 항아리, 같은 디렉토리에 있습니다) :
javac -cp antlr-3.2.jar *.java
마지막으로 Demo
클래스 실행
을
java -cp .:antlr-3.2.jar Demo
다음과 같은 출력을 생성
(Windows의 하는 ;
로 :
교체) :
Parsed: sentence='the number of size 14 shoes bought was'
Parsed: int='3'
정말 감사합니다 바트를! –
아무 문제 없어 @ 리차드, 내가 많이하지는 않았지만 : 당신의 문법은 처음부터 훌륭했습니다! :) –