>Java >java지도 시간 >ANTLR을 사용하여 간단한 4가지 연산 계산기를 어떻게 만들 수 있나요?

ANTLR을 사용하여 간단한 4가지 연산 계산기를 어떻게 만들 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-02 13:46:10778검색

How Can I Create a Simple Four-Operation Calculator Using ANTLR?

간단한 ANTLR 예제가 있습니까?

4연산 계산기가 포함된 간단한 ANTLR 예제를 만들려면 문법을 ANTLR로 변환하는 과정을 이해해야 합니다. Java 소스 코드.

문법 작성 파일

"Exp.g"와 같은 문법 파일로 시작하세요.

grammar Exp;

eval
    : additionExp EOF
    ;

additionExp
    : multiplyExp(+ multiplyExp
                | - multiplyExp
                )*
    ;

multiplyExp
    : atomExp(* atomExp
             | / atomExp
             )*
    ;

atomExp
    : Number
    | '(' additionExp ')'
    ;

Number
    : ('0'..'9')+ ('.' ('0'..'9')+)?
    ;

WS
    :   (' ' | '\t' | '\r'| '\n') {$channel=HIDDEN;}
    ;

렉서 및 파서 생성

다음을 사용하세요. 아래 명령을 사용하여 어휘 분석기를 생성하고 파서:

java -cp antlr-3.2.jar org.antlr.Tool Exp.g

테스트 클래스 생성

"ANTLRDemo.java"와 같은 테스트 클래스 생성:

import org.antlr.runtime.*;

public class ANTLRDemo {
    public static void main(String[] args) throws Exception {
        ANTLRStringStream in = new ANTLRStringStream("12*(5-6)");
        ExpLexer lexer = new ExpLexer(in);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        ExpParser parser = new ExpParser(tokens);
        parser.eval();
    }
}

문법에 Java 코드 추가

활성화하려면 작업을 수행하는 파서, {...} 블록 내에 Java 코드 추가:

grammar Exp;

eval returns [double value]
    : additionExp { System.out.println("value equals: "+$value); }
    ;
    
// ...

예제 실행

클래스 컴파일, 렉서 및 파서 생성 , 그리고 ANTLRDemo를 실행하여 "12*(5-6)" 표현식을 평가합니다.

이 예는 기본 문법을 보여줍니다. 간단한 4연산 계산기의 경우 문법 정의, 필요한 구성 요소 생성, 파서 동작 제어를 위한 Java 코드 추가 과정을 보여줍니다.

위 내용은 ANTLR을 사용하여 간단한 4가지 연산 계산기를 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.