1 # coding: utf-8
2 # frozen_string_literal: true
3
4
5
6 module Umu
7
8 module AbstractSyntax
9
10 module Core
11
12 module Expression
13
14 class Abstract < Umu::AbstractSyntax::Abstract
15 def evaluate(env)
16 value = E::Tracer.trace(
17 env.pref,
18 env.trace_stack.count,
19 'Eval(Expr)',
20 self.class,
21 self.loc,
22 self.to_s
23 ) { |event|
24 __evaluate__ env, event
25 }
26
27 ASR.make_value value
28 end
29
30
31 def simple?
32 false
33 end
34
35
36 private
37
38 def __evaluate__(_env, _event)
39 raise X::InternalSubclassResponsibility
40 end
41 end
42
43 end # Umu::AbstractSyntax::Core::Expression
44
45 end # Umu::AbstractSyntax::Core
46
47 end # Umu::AbstractSyntax
48
49 end # Umu