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 이 휠씬~ 편합니다.
댓글 달기