options {
STATIC = false;
}
PARSER_BEGIN(Calculator)
import java.io.PrintStream;
class Calculator{
static public void main(String[] args) throws ParseException, TokenMgrError,NumberFormatException{
Calculator parser=new Calculator(System.in);
parser.Start(System.out);
}
double previousValue=0.0;
}
PARSER_END(Calculator)
SKIP : {" "}
TOKEN : { < EOL : "\n" | "\r" | "\r\n" > }
TOKEN : { < PLUS : "+" > }
TOKEN : { < MINUS : "-" > }
TOKEN : { < TIMES : "*" > }
TOKEN : { < DIVIDE : "/" > }
TOKEN : { < NUMBER : (["0"-"9"])+ | (["0"-"9"])+ | (["0"-"9"])+ "." | "." (["0"-"9"])+ > }
TOKEN : { < #DIGITS : (["0"-"9"])+ > }
void Start(PrintStream printStream) throws NumberFormatException :
{}
{
(
previousValue = Expression()
<EOL>
{printStream.println(previousValue);}
)*
<EOF>
}
double Expression() throws NumberFormatException :
{
double i;
double value;
}
{
value=Term()
(
<PLUS>
i=Term()
{value += i;}
|
<MINUS>
i = Term()
{ value -= i;}
)*
{return value;}
}
double Term() throws NumberFormatException :
{
double i;
double value;
}
{
value = Primary()
(
<TIMES>
i=Primary()
{value *= i;}
|
<DIVIDE>
i=Primary()
{value /=i;}
)*
{return value;}
}
double Primary() throws NumberFormatException :
{
Token t;
}
{
t=<NUMBER>
{return Double.parseDouble(t.image);}
}
'컴퓨터 공학' 카테고리의 다른 글
정보보호개론 - 키확립프로토콜 까지 (0) | 2015.11.27 |
---|---|
객체지향개발론-싱글톤패턴까지 정리 (0) | 2015.11.27 |
객체지향개발론 4장 데코레이터 패턴 (0) | 2015.11.27 |
객체지향개발론 4장 옵저버패턴 (0) | 2015.11.27 |
객체지향개발론_3장.전략패턴 (0) | 2015.11.27 |