This file is indexed.

/usr/share/SuperCollider/HelpSource/Classes/Interpreter.schelp is in supercollider-common 1:3.8.0~repack-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
class::Interpreter
summary:: The interpreter defines a context in which interactive commands are compiled and executed.
categories:: Core>Kernel
related::How-to-Use-the-Interpreter

description::
The interpreter is an object that handles the translation and execution of code at runtime. It is that what runs any program code and defines a context for it.

code::
(
a = 5 + 7;
this.cmdLine.postln;
)
::

classMethods::

private::new

instanceMethods::

subsection::Accessing

In the interpreter, code::this:: refers to the interpreter itself, e.g.: code::this.postln::

The interpreter defines global variables (code::a:: … code::z::), that can be used for interactive programming. Except these single letter variables ("interpreter variables"), all variables have to be defined by the keyword code::var:: (see: link::Reference/Assignment::, and link::Reference/Scope::).

code::
// typical usage
a = 4;
b = 3;
b = b + a;

// some sound
a = Synth(\default);
g = fork { loop { 0.1.wait; a.set(\freq, 200 + 20.0.rand2.postln) } };
g.stop; a.free;

// an overview of all the variables
this.inspect;
::

note::Use these variables with a bit of extra care – as they are global, they remain in memory and one piece of code may happen to interfere with another one. The variable code::s:: is by convention bound to the default server (link::Classes/Server::) and should not be changed.::



method::clearAll

set the values of the variables code::a:: through code::z:: to nil.

code::
x = 123;
x.postln;
this.clearAll;
x.postln;
::

subsection::Compile & Interpret

method::interpret

Compile and execute a link::Classes/String::.

code::
this.interpret("(123 + 4000).postln");
::

method::interpretPrint

Compile and execute a link::Classes/String::, printing the result.

code::
this.interpretPrint("123 + 4000");
::

method::compile

Compile a String and return a link::Classes/Function::.

code::
(
z = this.compile("(123 + 4000).postln");
z.postln;
z.value;
)
::

method::compileFile

Reads the file at pathName, compiles it and returns a Function.
The file must contain a valid SuperCollider expression, naturally.
This will not compile class definitions, only expressions.

method::executeFile

Reads the file at pathName, compiles it and executes it, returning the result.
The file must contain a valid SuperCollider expression, naturally.
This will not compile class definitions, only expressions.

method::cmdLine

Returns the previously interpreted code.

code::
1 + 2;
this.cmdLine
::

method::codeDump

this interpreter variable can be set to evaluate a function with any successfully compiled code.
see e.g. the class History.

code::
a = [ ]; // store all the code evaluated in a
this.codeDump = { |code| a = a.add(code) };
1 + 3;
f = { "hallo" };
a.postcs;
codeDump = nil; // reset to nil.
::

method::preProcessor

can be used to modify code before it is interpreted. Given appropriate delimiters, this can be used to implement little languages.

code::
// silly but simple: understand a Saw for every SinOsc
this.preProcessor = { |code| code.replace("SinOsc", "Saw") };

{ SinOsc.ar(200) * 0.1 }.play;

preProcessor = nil; // reset to nil.
::

method::a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z

Global variables ("interpreter variables") for interactive programming (see link::#Accessing::).