Antlr 시리즈 - 입문 편
2841 단어 antlr
Antlr 다운로드 주소: http://www.antlr.org/download.html
Antlr 바이트 코드 는 lib 아래 에 있 습 니 다.
실례:
1. L. g 파일 을 만 듭 니 다. 내용 은 다음 과 같 습 니 다.
class SimpleParser extends Parser;
entry : (d:DOB n:NAME a:AGE(SEMI)
{
System.out.println(
"Name: " +
n.getText() +
", Age: " +
a.getText() +
", DOB: " +
d.getText()
);
})*
;
class SimpleLexer extends Lexer;
NAME : ('a'..'z'|'A'..'Z')+;
DOB : ('0'..'9' '0'..'9' '/')=>
(('0'..'9')('0'..'9')'/')(('0'..'9')('0'..'9')'/')('0'..'9')('0'..'9') //{ $setType(DOB); }
| ('0'..'9')+ { $setType(AGE); } ;
WS :
(' '
| '\t'
| '\r' '
' { newline(); }
| '
' { newline(); }
)
{ $setType(Token.SKIP); }
;
SEMI : ';' ;
이 파일 의 내용 은 문법 분석 기 를 통 해 분 석 된 후 (Lexer) 자바 파일 을 생 성 합 니 다.
구체 적 인 명령:
java -cp /home/xfc/antlr/antlr3.4/lib/antlr-3.4-complete.jar antlr.Tool L.g
2. 종료 후 자바 파일 3 개 생 성:
LLexer.java
LParser.java
LParserTokenTypes.java
3. test 테스트 를 작성 합 니 다:
import java.io.*;
public class Main {
public static void main(String args[]) {
FileInputStream f = null;
try {
f = new FileInputStream("/home/xfc/antlr/s_antlr/src/test.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
DataInputStream input = new DataInputStream(f);
LLexer lexer = new LLexer(input);
LParser parser = new LParser(lexer);
try {
parser.entry();
} catch(Exception e) {}
}
}
4. 특정 디 렉 터 리 의 test. txt 를 새로 만 듭 니 다.
06/06/82 Peter 20;
03/04/83 Rosie 19;
04/05/81 Mikey 21;
5. 실행 후 결과:
쓰다
Name: Peter, Age: 20, DOB: 06/06/82
Name: Rosie, Age: 19, DOB: 03/04/83
Name: Mikey, Age: 21, DOB: 04/05/81
참고 자료: http://zbw.iteye.com/blog/25860
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ANTLR 및 C#을 사용하여 외부 DSL 만들기이 게시물에서는 ANTLR을 사용하여 C#에서 간단한 DSL을 작성하는 방법을 보여줍니다. A domain-specific language is a computer language specialized to a pa...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.