Mercurial > hg > truffle
comparison truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java @ 22215:d3bdaa91bc82
Truffle/Instrumentation: method signature on TruffleLanguage for getting each language's "default" ASTProber
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Tue, 15 Sep 2015 11:57:05 -0700 |
parents | 3aad794eec0e |
children | 1c0f490984d5 |
comparison
equal
deleted
inserted
replaced
22214:3aad794eec0e | 22215:d3bdaa91bc82 |
---|---|
38 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | 38 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
39 * SOFTWARE. | 39 * SOFTWARE. |
40 */ | 40 */ |
41 package com.oracle.truffle.sl; | 41 package com.oracle.truffle.sl; |
42 | 42 |
43 import com.oracle.truffle.api.*; | |
44 import com.oracle.truffle.api.debug.*; | |
45 import com.oracle.truffle.api.dsl.*; | |
46 import com.oracle.truffle.api.frame.*; | |
47 import com.oracle.truffle.api.instrument.*; | |
48 import com.oracle.truffle.api.nodes.*; | |
49 import com.oracle.truffle.api.source.*; | |
50 import com.oracle.truffle.api.vm.*; | |
51 import com.oracle.truffle.api.vm.TruffleVM.Symbol; | |
52 import com.oracle.truffle.sl.builtins.*; | |
53 import com.oracle.truffle.sl.nodes.*; | |
54 import com.oracle.truffle.sl.nodes.call.*; | |
55 import com.oracle.truffle.sl.nodes.controlflow.*; | |
56 import com.oracle.truffle.sl.nodes.expression.*; | |
57 import com.oracle.truffle.sl.nodes.instrument.*; | |
58 import com.oracle.truffle.sl.nodes.local.*; | |
59 import com.oracle.truffle.sl.parser.*; | |
60 import com.oracle.truffle.sl.runtime.*; | |
61 | |
62 import java.io.BufferedReader; | 43 import java.io.BufferedReader; |
63 import java.io.IOException; | 44 import java.io.IOException; |
64 import java.io.InputStreamReader; | 45 import java.io.InputStreamReader; |
65 import java.io.PrintWriter; | 46 import java.io.PrintWriter; |
66 import java.math.BigInteger; | 47 import java.math.BigInteger; |
67 import java.nio.file.Path; | 48 import java.nio.file.Path; |
68 import java.util.ArrayList; | |
69 import java.util.Collections; | 49 import java.util.Collections; |
70 import java.util.List; | 50 import java.util.List; |
51 | |
52 import com.oracle.truffle.api.CallTarget; | |
53 import com.oracle.truffle.api.RootCallTarget; | |
54 import com.oracle.truffle.api.Truffle; | |
55 import com.oracle.truffle.api.TruffleLanguage; | |
56 import com.oracle.truffle.api.debug.DebugSupportProvider; | |
57 import com.oracle.truffle.api.dsl.NodeFactory; | |
58 import com.oracle.truffle.api.dsl.UnsupportedSpecializationException; | |
59 import com.oracle.truffle.api.frame.MaterializedFrame; | |
60 import com.oracle.truffle.api.instrument.ASTProber; | |
61 import com.oracle.truffle.api.instrument.AdvancedInstrumentResultListener; | |
62 import com.oracle.truffle.api.instrument.AdvancedInstrumentRootFactory; | |
63 import com.oracle.truffle.api.instrument.ToolSupportProvider; | |
64 import com.oracle.truffle.api.instrument.Visualizer; | |
65 import com.oracle.truffle.api.nodes.GraphPrintVisitor; | |
66 import com.oracle.truffle.api.nodes.Node; | |
67 import com.oracle.truffle.api.nodes.NodeInfo; | |
68 import com.oracle.truffle.api.nodes.NodeUtil; | |
69 import com.oracle.truffle.api.source.Source; | |
70 import com.oracle.truffle.api.source.SourceSection; | |
71 import com.oracle.truffle.api.vm.TruffleVM; | |
72 import com.oracle.truffle.api.vm.TruffleVM.Symbol; | |
73 import com.oracle.truffle.sl.builtins.SLBuiltinNode; | |
74 import com.oracle.truffle.sl.builtins.SLDefineFunctionBuiltin; | |
75 import com.oracle.truffle.sl.builtins.SLNanoTimeBuiltin; | |
76 import com.oracle.truffle.sl.builtins.SLPrintlnBuiltin; | |
77 import com.oracle.truffle.sl.builtins.SLReadlnBuiltin; | |
78 import com.oracle.truffle.sl.nodes.SLRootNode; | |
79 import com.oracle.truffle.sl.nodes.SLTypes; | |
80 import com.oracle.truffle.sl.nodes.call.SLDispatchNode; | |
81 import com.oracle.truffle.sl.nodes.call.SLInvokeNode; | |
82 import com.oracle.truffle.sl.nodes.call.SLUndefinedFunctionException; | |
83 import com.oracle.truffle.sl.nodes.controlflow.SLBlockNode; | |
84 import com.oracle.truffle.sl.nodes.controlflow.SLBreakNode; | |
85 import com.oracle.truffle.sl.nodes.controlflow.SLContinueNode; | |
86 import com.oracle.truffle.sl.nodes.controlflow.SLIfNode; | |
87 import com.oracle.truffle.sl.nodes.controlflow.SLReturnNode; | |
88 import com.oracle.truffle.sl.nodes.controlflow.SLWhileNode; | |
89 import com.oracle.truffle.sl.nodes.expression.SLAddNode; | |
90 import com.oracle.truffle.sl.nodes.expression.SLBigIntegerLiteralNode; | |
91 import com.oracle.truffle.sl.nodes.expression.SLDivNode; | |
92 import com.oracle.truffle.sl.nodes.expression.SLEqualNode; | |
93 import com.oracle.truffle.sl.nodes.expression.SLFunctionLiteralNode; | |
94 import com.oracle.truffle.sl.nodes.expression.SLLessOrEqualNode; | |
95 import com.oracle.truffle.sl.nodes.expression.SLLessThanNode; | |
96 import com.oracle.truffle.sl.nodes.expression.SLLogicalAndNode; | |
97 import com.oracle.truffle.sl.nodes.expression.SLLogicalOrNode; | |
98 import com.oracle.truffle.sl.nodes.expression.SLMulNode; | |
99 import com.oracle.truffle.sl.nodes.expression.SLStringLiteralNode; | |
100 import com.oracle.truffle.sl.nodes.expression.SLSubNode; | |
101 import com.oracle.truffle.sl.nodes.instrument.SLDefaultVisualizer; | |
102 import com.oracle.truffle.sl.nodes.instrument.SLStandardASTProber; | |
103 import com.oracle.truffle.sl.nodes.local.SLReadLocalVariableNode; | |
104 import com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode; | |
105 import com.oracle.truffle.sl.parser.Parser; | |
106 import com.oracle.truffle.sl.parser.SLNodeFactory; | |
107 import com.oracle.truffle.sl.parser.Scanner; | |
108 import com.oracle.truffle.sl.runtime.SLContext; | |
109 import com.oracle.truffle.sl.runtime.SLFunction; | |
110 import com.oracle.truffle.sl.runtime.SLFunctionRegistry; | |
111 import com.oracle.truffle.sl.runtime.SLNull; | |
71 | 112 |
72 /** | 113 /** |
73 * SL is a simple language to demonstrate and showcase features of Truffle. The implementation is as | 114 * SL is a simple language to demonstrate and showcase features of Truffle. The implementation is as |
74 * simple and clean as possible in order to help understanding the ideas and concepts of Truffle. | 115 * simple and clean as possible in order to help understanding the ideas and concepts of Truffle. |
75 * The language has first class functions, but no object model. | 116 * The language has first class functions, but no object model. |
154 */ | 195 */ |
155 @TruffleLanguage.Registration(name = "SL", version = "0.5", mimeType = "application/x-sl") | 196 @TruffleLanguage.Registration(name = "SL", version = "0.5", mimeType = "application/x-sl") |
156 public final class SLLanguage extends TruffleLanguage<SLContext> { | 197 public final class SLLanguage extends TruffleLanguage<SLContext> { |
157 private static List<NodeFactory<? extends SLBuiltinNode>> builtins = Collections.emptyList(); | 198 private static List<NodeFactory<? extends SLBuiltinNode>> builtins = Collections.emptyList(); |
158 private static Visualizer visualizer = new SLDefaultVisualizer(); | 199 private static Visualizer visualizer = new SLDefaultVisualizer(); |
159 private List<ASTProber> astProbers; | 200 private ASTProber astProber = new SLStandardASTProber(); |
160 | 201 |
161 private SLLanguage() { | 202 private SLLanguage() { |
162 this.astProbers = new ArrayList<>(); | |
163 astProbers.add(new SLStandardASTProber()); | |
164 } | 203 } |
165 | 204 |
166 public static final SLLanguage INSTANCE = new SLLanguage(); | 205 public static final SLLanguage INSTANCE = new SLLanguage(); |
167 | 206 |
168 @Override | 207 @Override |
442 } | 481 } |
443 return visualizer; | 482 return visualizer; |
444 } | 483 } |
445 | 484 |
446 @Override | 485 @Override |
447 protected List<ASTProber> getASTProbers() { | 486 protected ASTProber getDefaultASTProber() { |
448 return astProbers; | 487 return astProber; |
449 } | 488 } |
450 | 489 |
451 @SuppressWarnings("deprecation") | 490 @SuppressWarnings("deprecation") |
452 @Override | 491 @Override |
453 protected void enableASTProbing(ASTProber prober) { | 492 protected void enableASTProbing(ASTProber prober) { |