Cin-browser interpreter · runs locally
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h> #include <string.h> string expr; int pos = 0; int peek() { return expr[pos]; } void next() { pos++; } int parse_expr(); int parse_factor() { int val = 0; if (peek() == '(') { next(); val = parse_expr(); if (peek() != ')') { printf("syntax error: expected )\n"); return 0; } next(); return val; } while (peek() >= '0' && peek() <= '9') { val = val * 10 + (peek() - '0'); next(); } return val; } int parse_term() { int val = parse_factor(); while (peek() == '*' || peek() == '/') { char op = peek(); next(); int rhs = parse_factor(); if (op == '*') val = val * rhs; else val = val / rhs; } return val; } int parse_expr() { int val = parse_term(); while (peek() == '+' || peek() == '-') { char op = peek(); next(); int rhs = parse_term(); if (op == '+') val = val + rhs; else val = val - rhs; } return val; } int main() { printf("Enter expression: "); scanf("%s", &expr); int result = parse_expr(); printf("= %d\n", result); return 0; }
55 lines
Output
Write some code, then press Run. Stdout and errors appear here.