1 # coding: utf-8
2 # frozen_string_literal: true
3
4
5
6 module Umu
7
8 module ConcreteSyntax
9
10 module Core
11
12 module Pattern
13
14 class Abstract < Abstraction::Model
15 def pretty_print(q)
16 q.text self.to_s
17 end
18
19
20 def exported_vars
21 raise X::InternalSubclassResponsibility
22 end
23
24
25 def desugar_value(expr, env)
26 E::Tracer.trace(
27 env.pref,
28 env.trace_stack.count,
29 'Desu(Val)',
30 self.class,
31 self.loc,
32 self.to_s
33 ) { |event|
34 __desugar_value__ expr, env, event
35 }
36 end
37
38
39 def desugar_lambda(seq_num, env)
40 E::Tracer.trace(
41 env.pref,
42 env.trace_stack.count,
43 'Desu(Lam)',
44 self.class,
45 self.loc,
46 self.to_s
47 ) { |event|
48 __desugar_lambda__ seq_num, env, event
49 }
50 end
51
52
53 private
54
55 def __desugar_value__(_expr, _env, _event)
56 raise X::InternalSubclassResponsibility
57 end
58
59
60 def __desugar_lambda__(_seq_num, _env, _event)
61 raise X::InternalSubclassResponsibility
62 end
63 end
64
65 end # Umu::ConcreteSyntax::Core::Pattern
66
67 end # Umu::ConcreteSyntax::Core
68
69 end # Umu::ConcreteSyntax
70
71 end # Umu