Run Code  | Code Wall  | Users  | Misc  | Feedback  | About  | Login  | Theme  | Privacy 

C# Abstract Syntax Tree Example: Compiler for a numeric expression

Language: Editor: Layout:
+ ] Show input
Compilation time: 0,16 sec, absolute running time: 0,11 sec, cpu time: 0,09 sec, average memory usage: 16 Mb, average nr of threads: 3 
edit mode |  history  | discussion
Input an expression, for example: (2.11*-3*(5+7.18+9.23))+---1+++(-+-+--(1+2))*(-+-3+4)*(5+6)+3*(2+1)
Tree graph:
                        ┌──  2.11
                   ┌── (*)
                   │    └── (-)
                   │         └──  3
              ┌── (*)
              │    │         ┌──  5
              │    │    ┌── (+)
              │    │    │    └──  7.18
              │    └── (+)
              │         └──  9.23
         ┌── (+)
         │    └── (-)
         │         └── (-)
         │              └── (-)
         │                   └──  1
    ┌── (+)
    │    │         ┌── (+)
    │    │         │    └── (+)
    │    │         │         └── (-)
    │    │         │              └── (+)
    │    │         │                   └── (-)
    │    │         │                        └── (+)
    │    │         │                             └── (-)
    │    │         │                                  └── (-)
    │    │         │                                       │    ┌──  1
    │    │         │                                       └── (+)
    │    │         │                                            └──  2
    │    │    ┌── (*)
    │    │    │    │    ┌── (-)
    │    │    │    │    │    └── (+)
    │    │    │    │    │         └── (-)
    │    │    │    │    │              └──  3
    │    │    │    └── (+)
    │    │    │         └──  4
    │    └── (*)
    │         │    ┌──  5
    │         └── (+)
    │              └──  6
── (+)
    │    ┌──  3
    └── (*)
         │    ┌──  2
         └── (+)
              └──  1

Value: -1041679
Lisp form: (+ (+ (+ (* (* 2.11 (- 3)) (+ (+ 5 7.18) 9.23)) (- (- (- 1)))) (* (* (+ (+ (- (+ (- (+ (- (- (+ 1 2))))))))) (+ (- (+ (- 3))) 4)) (+ 5 6))) (* 3 (+ 2 1)))