JAVACC 컴파일을 어떻게하는지 모르겠어요;;
javacc 플러그인을 이클립스에 설치했고
jj파일 두개를 컴파일하면되는데 빌드하면안되더라구요;;
초보라 어떻게 해야될지를 모르겠습니다.jj파일 두개도 내용첨부해봅니다.
Arithmetic.jj파일내용
options
{
    LOOKAHEAD=2;
}
PARSER_BEGIN(Arithmetic)
public class Arithmetic
{
}
PARSER_END(Arithmetic)
SKIP :
{
    " "
|   "\r"
|   "\t"
}
TOKEN:
{
    < NUMBER: ()+ ( "." ()+ )? >
|   < DIGIT: ["0"-"9"] >
}
double expr():
{
}
{
    term() ( "+" expr() | "-" expr() )*
}
double term():
{
}
{
    unary() ( "*" term() | "/" term() )*
}
double unary():
{
}
{
    "-" element() | element()
}
double element():
{
}
{
     | "(" a=expr() ")"
}
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
calculator.jj 파일내용
options
{
    LOOKAHEAD=2;
}
PARSER_BEGIN(Calculator)
public class Calculator
{
    public static void main(String args[]) throws ParseException 
    {
        Calculator parser = new Calculator(System.in);
        while (true)
        {
            parser.parseOneLine();
        }
    }
}
PARSER_END(Calculator)
SKIP :
{
    " "
|   "\r"
|   "\t"
}
TOKEN:
{
    < NUMBER: ()+ ( "." ()+ )? >
|   < DIGIT: ["0"-"9"] >
|   < EOL: "\n" >
}
void parseOneLine():
{
    double a;
}
{
    a=expr()       { System.out.println(a); }
  | 
  |                { System.exit(-1); }
}
double expr():
{
    double a;
    double b;
}
{
    a=term()
    (
        "+" b=expr()    { a += b; }
    |   "-" b=expr()    { a -= b; }
    )*
                        { return a; }
}
double term():
{
    double a;
    double b;
}
{
    a=unary()
    (
        "*" b=term()    { a *= b; }
    |   "/" b=term()    { a /= b; }
    )*
                        { return a; }
}
double unary():
{
    double a;
}
{
    "-" a=element()     { return -a; }
|   a=element()         { return a; }
}
double element():
{
    Token t;
    double a;
}
{
    t=          { return Double.parseDouble(t.toString()); }
|   "(" a=expr() ")"    { return a; }
}
| 첨부 | 파일 크기 | 
|---|---|
| 94.8 KB | 


JAVACC 보다는 ANTLR 을...
JAVACC 보다는 ANTLR 를 쓰시는 것이 편하실 겁니다.
ANTLRWorks ( GUI Tool ) 도 있기 때문에 쉽게 작업하실 수도 있고요.
AST 그려주는 것도 JAVACC보다 ANTLR 이 휠씬~ 편합니다.
댓글 달기