Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <ctype.h>
- int token;
- int expr();
- int number();
- int digit();
- int term();
- int factor();
- void getToken() {
- token = getchar();
- }
- int expr() {
- int result = term();
- while (token == '+' || token == '-') {
- if (token == '+') {
- getToken();
- result += term();
- }
- else {
- getToken();
- result -= term();
- }
- }
- if (token == ')')
- getToken();
- return result;
- }
- int term() {
- int result = factor();
- while (token == '*' || token=='/') {
- if (token == '*') {
- getToken();
- result *= factor();
- }
- else {
- getToken();
- result /= factor();
- }
- }
- return result;
- }
- int factor() {
- if (token == '(') {
- getToken();
- return expr();
- }
- return number();
- }
- int digit() {
- int result;
- if (isdigit(token)) {
- result = token - '0';
- getToken();
- }
- return result;
- }
- int number() {
- int result = 0;
- while (isdigit(token)) {
- result = 10 * result + digit();
- }
- return result;
- }
- int main() {
- getToken();
- printf("%d", expr());
- return 0;
- }
Add Comment
Please, Sign In to add comment