nyuuzyou/wikis huggingface dataset:
LSL Function Style

__NOTOC__
Propose a style for the LSL function articles by creating an article in the following form: [[{{FULLPAGENAME}}/Your Resident name]]
General discussion should be held in Talk:LSL Function Style, whereas questions regarding a specific implementation should be held in the relevant article's talk page.
== Requirements ==
* Allows for accurate documentation
* Easy accessible to new and old scripters alike
* Details common problems with solutions
== Proposed Styles ==
=== Round 1 ===
* Celierra Darling
* Strife Onizuka et al.
* SignpostMarv Martin
=== Round 2 ===
* Strife Onizuka - tentative submission
LSL Function Style/Celierra Darling

llExample
Creates an annoying animation 	Creates an annoying animation
Returns: 	Returns:
boolean 	success
Parameters: 	Parameters:
integer 	pokes
string 	descriptiveName
list 	parameterList
key 	target
vector 	position
Delay 	0
Energy 	10
Complexity 	O(n3) (or n/a)
Function ID 	-1
Related to: 	Related to:
llListen, llListenRemove, llListenControl (example for listen()) llList2Integer, etc. (example for all those List2X functions)	llListen, llListenRemove, llListenControl (example for listen()) llList2Integer, etc. (example for all those List2X functions)
This page is in progress and nowhere near done yet
This is the lede (yes, lede is a word) and should give a short overview of the function. This LSL function takes in a number of pokes, a name for the animation, a list of parameters (see below table), the key of an avatar, and the position from which the giant hand should appear. It caused the specified damaged to be poked repeatedly, for massive damage.
Todo is under Notes.
== Specification ==
The exact behavior of the function, its preconditions (how its arguments must be formatted and what it expects the world to look like), postconditions (how the return value is formatted), side effects (what happens in-world), etc.
Unlike lede paragraph, has less high-level abstraction and more nitty-gritty, corner cases, error conditions, etc.
Ex. Channel number must be between x and y. Channel 0 is main, everyone can hear. Negatives are okay, and only objects can speak to negative channels.
=== Parameter list ===
Constants, flags, etc, what is accepted into an ambiguously-typed parameter (lists, bitflags). Constants used in multiple places should be linked to their articles.
=== Caveats ===
Common misunderstandings, mistakes, etc.
* Listens are removed when changing state
* The function returns a handle that should be used to manually remove the listen
* Causes lag if you listen too many
* Max number
* etc.
== Examples ==
Short examples, blah blah, should try to demonstrate all the caveats, though not necessarily in one script. Maybe some creative uses should go here too. Should avoid any script that uses many other functions - examples should probably be single-purpose for this specific function and be as clear as possible.
== Notes ==
Anything obscure that isn't covered above. Whispers go 10m, normal talking goes 20m, shouting goes 100m.
Todo:
* Finish everything
* Templatize
* Make sample text for a real, complicated function
* Add cool things like
** More modularity
** Collapsible raw data tables
== Internal ==
Design document, functional spec, test scripts, related functions - for LL use, mostly (see how they did llEmail).
== See Also ==
* listen
* etc.
* ...
* A box with list of closely-related articles (especially for things like particles or listen)
* ...loosely-related articles (all string-manipulation, for example)
* ...major LSL (only function?) categories
* ...SL Wiki portals (?)
* (don't necessarily need this many boxes)
Categories go at the bottom (here).
LSL Function Style/Strife Onizuka

WORK IN PROGRESS
(This style and layout is not finalized yet - this needs to be finalized before significant information is added to articles!)
== Specification ==
This function performs this specific set of actions under these circumstances. If the key passed to it is , then it will shout "Nobody's whacking!" on channel 0.
== Caveats ==
* Don't use this function to test whether a key is null.
* (if you know of none, try using:) None known
== Examples ==
default
{
 state_entry()
 {
 llSay(0,"The absolute value of -4 is: "+(string)llAbs(-4) );
 }
}
== Helper Functions ==
== See Also ==
(similar functions, related examples and pages, etc.)
== Notes ==
(footnotes, if necessary - caveats should go in caveats section)
----
----
==Implementation==
----
----
==Function Description on Wish List==
LSL Game Control Beta

LSL Game Control is a way for scripts in vehicles and attachments to use game controller input from devices such as Xbox, PS4/5 and joysticks. For example, a helicopter could more delicately maneuver, using input from the analog stick rather than WASD on a keyboard.
👉 For information about the LSL event and writing scripts that use game control see: game_control.
== Instructions ==
* Download and install the installer from Github
* Enable Develop menu Advanced > Show DevelopMenu
* Enable GameControl feature Develop --> Experimental Features --> GameControl
* Change preferences to allow GameControl to send data Preferences --> Game Control --> Send GameControl Data to Server
* Plug in an Xbox game controller
LSL HTTP server/beta

[Update, 30 April 09] The HTTP-in code is in trunk and slated for release with Server 1.27. The http-in sandbox regions will remain on aditi until the first 1.27 server is branched from trunk and deployed to all of aditi for testing. This will likely happen in May, with 1.27 deployed to agni in June. 
[Update, 6 Feb 09] We still haven't acquired the merge lock, but Kelly did a new branch off of trunk anyway and Prospero has graciously redeployed http-in to select aditi regions. The http-in sandboxes mentioned below are back online.
[Update, 23 Jan 09] I'd like to thank everyone who participated in this beta. Thanks to your help with testing all the edges and corners of the http-in functionality we passed QA's integration testing. Http-in is now awaiting the lock to merge into trunk, hopefully for the 1.26 server version. The http-in beta sandbox regions are likely to go down for several days until we actually acquire the lock. At that time we'll redeploy the merged version for final testing.
; Where?
:Aditi, the preview grid. Regions are named "Http In Sandbox n" where n is 1,2, or 3.
; What viewer should I use?
: Use a mono-compatible main grid viewer (version 1.21 or later), and have it log you into aditi. Shift-control-g at the login screen brings up the grid select dropdown. Aditi = preview grid, Agni = main grid.
; But the viewer won't know about the new functions
: When using a Mono-enabled viewer, all compilation is done server side. So make sure you are using a mono-enabled viewer and you will be able to compile a script with the new functions as long as you are in one of the http-in sandboxes. You do not need to have "Mono" checked (see this forum thread).
; How do I report bugs?
: Check this meta JIRA - . Existing issues for http-in are linked. Check the open issues to see if your bug is already listed. If so, consider commenting on that issue to add any insights you have. If not, create a new issue. Make sure you:
* JIRA should be SVC
* Title should start "http-in:"
* Component "Scripts"
* Affects version is unimportant
* Please include a minimal repro of the bug. Pare down the code to the minimum necessary to exhibit the issue.
* Link your issue "Relates to" SVC-3238
; What if I have questions?
: Several resources are available
* Use the discussion tab for this page to ask questions about the beta
* If you are a member of secondlifescripters@lists.secondlife.com you can post a question.
* Or try asking on the second life lsl forum. 
* I (Periapse Linden) hold an office hour on Fridays at 3pm. Location is Beaumont, eastern edge, under the hill with the observatory dome.
; What about Teen Grid residents?
: Teen grid residents are welcome to participate in this beta. Log in to aditi with the appropriate viewer (see above). Teleport to "Http In Sandbox Teen".
== Resources ==
* New functions and their arguments: LSL http server
* Meta JIRA with all known issues: 
* Code samples
* Design JIRA: 
* Design docs: LSL_http_server/design
LSL NSieve Benchmark

//
// The Great Computer Language Shootout
// http://shootout.alioth.debian.org/
//
// contributed by Isaac Gouy
// modified by Babbage Linden
//
string setByteArray(integer numbytes)
{
 string result = "";
 integer i;
 for(i = 0; i < numbytes; ++i)
 {
 result += "1";
 }
 result += "1";
 return result;
}
string replace(string s, integer index, string char)
{
 string result = "";
 if(index >= 1)
 { 
 result += llGetSubString(s, 0, index - 1);
 }
 result += char;
 if(index < (llStringLength(s) - 1))
 {
 result += llGetSubString(s, index + 1, -1);
 }
 return result;
}
integer get(string s, integer index)
{
 return llGetSubString(s, index, index) == "1";
}
string set(string s, integer index)
{
 return replace(s, index, "1");
}
string unset(string s, integer index)
{
 return replace(s, index, "0");
}
test() 
{
 integer m = 128;
 string bytes = setByteArray(m);
 integer count = 0;
 integer i;
 for (i=2; i <= m; i++)
 {
 if(get(bytes, i))
 {
 integer k;
 for(k=i+i; k <= m; k+=i)
 {
 bytes = unset(bytes, k);
 }
 count++;
 }
 }
 llSay(0, "Primes up to " + (string)m + " " + (string)count);
}
time()
{
 llResetTime();
 llSay(0, "Starting tests...");
 test();
 llSay(0, "Finished tests in " + (string)llGetTime() + "s");
}
default
{
 state_entry()
 {
 time();
 }
 
 touch_start(integer num)
 {
 time();
 }
}
== LSL2 Optimized ==
This version was optimized for the LSL2 VM, it might run faster under Mono then the unoptimized version. In LSLEditor, it runs about 20% faster.
//
// The Great Computer Language Shootout
// http://shootout.alioth.debian.org/
//
// contributed by Isaac Gouy
// modified by Babbage Linden
// optimized for LSL2 by Strife Onizuka, Apr 14 2008
//
test() 
{
 integer m = 128;
 string bytes = "11";
 integer i = 2;
 for(; i <= m; i = i << 1)
 {
 bytes += bytes;
 }
 bytes = llGetSubString(bytes , 0, m);
 integer count = 0;
 for (i = 2; i <= m; ++i)
 {
 if(llGetSubString(bytes, i, i) == "1")
 {
 integer k = i;
 while((k += i) <= m)
 {
 bytes = llInsertString(llDeleteSubString(bytes, k, k), k, "0");
 }
 ++count;
 }
 }
 llSay(0, "Primes up to " + (string)m + " " + (string)count);
}
time()
{
 llResetTime();
 llSay(0, "Starting tests...");
 test();
 llSay(0, "Finished tests in " + (string)llGetTime() + "s");
}
default
{
 state_entry()
 {
 time();
 }
 
 touch_start(integer num)
 {
 time();
 }
}
LSL NSieve Bits Benchmark

//
// The Great Computer Language Shootout
// http://shootout.alioth.debian.org/
//
// contributed by Isaac Gouy
// modified by Babbage Linden
//
string hexc="0123456789ABCDEF";
string setBitArray(integer numbits)
{
 string result = "";
 integer i;
 for(i = 0; i < numbits; i += 4)
 {
 result += "F";
 }
 result += "F";
 return result;
}
string replace(string s, integer index, string char)
{
 string result = "";
 if(index >= 1)
 { 
 result += llGetSubString(s, 0, index - 1);
 }
 result += char;
 if(index < (llStringLength(s) - 1))
 {
 result += llGetSubString(s, index + 1, -1);
 }
 return result;
}
integer get(string s, integer index)
{
 integer charIndex = index / 4;
 integer bitIndex = index % 4;
 integer bits = (integer)("0x" + llGetSubString(s, charIndex, charIndex));
 return (bits & (1 << bitIndex));
}
string set(string s, integer index)
{
 integer charIndex = index / 4;
 integer bitIndex = index % 4;
 integer bits = (integer)("0x" + llGetSubString(s, charIndex, charIndex));
 bits = bits | (1 << bitIndex);
 return replace(s, charIndex, llGetSubString(hexc, bits, bits));
}
string unset(string s, integer index)
{
 integer charIndex = index / 4;
 integer bitIndex = index % 4;
 integer bits = (integer)("0x" + llGetSubString(s, charIndex, charIndex));
 integer mask = 0xF & ~(1 << bitIndex);
 bits = bits & mask;
 return replace(s, charIndex, llGetSubString(hexc, bits, bits));
}
test()
{
 integer m = 128;
 string bits = setBitArray(m);
 integer count = 0;
 integer i;
 for (i=2; i <= m; i++)
 {
 if(get(bits, i))
 {
 integer k;
 for(k=i+i; k <= m; k+=i)
 {
 bits = unset(bits, k);
 }
 count++;
 }
 }
 llSay(0, "Primes up to " + (string)m + " " + (string)count);
}
time()
{
 llResetTime();
 llSay(0, "Starting tests...");
 test();
 llSay(0, "Finished tests in " + (string)llGetTime() + "s");
}
default
{
 state_entry()
 {
 time();
 }
 
 touch_start(integer num)
 {
 time();
 }
}
LSL Operators/fr

Les opérateurs sont utilisés pour déclencher une opération (ou une action mathématique) sur un (ex : !) ou deux opérandes. L'exemple typique est 1+2 ou 1 et 2 sont les opérandes et le + est l'opérateur.
L'application de ce concept est plus étendue en LSL dans la mesure où les opérandes peuvent être des variables et que dans certains cas l'opérateur peut nécessiter une variable à sa gauche.
Operateur 	Description 	Exemple d'utilisation 	 	
() [] . 	Parentheses, Crochets et point 	A faire en 1er 	 	
(type) 	Changement de type 	message = "le résulat est :" + (string) resultat;	 	
! ~ ++ -- 	Contraire, Complément, Incrémentation, Décrémentation 	compteur++; 	 	
* / % 	Multiplication/Produit-scalaire, Division, Module/Produit-vectoriel 	rollover = (count + 1)%5; 	 	
- 	Soustraction 	un = 3 - 2; 	 	
+ 	Addition ou concatenation de string 	deux = 1+1;
texte = "Hello" + "World"; 	 	
+ 	Concaténation ou fusion de list 	maList = [1, 2, 3] + [4, 5];
nouvelle_List = ancienne_List + ajout_List;	 	
<< >> 	Left Shift, Right Shift 	huit = 4 << 1; 	 	
< <= > >= 	Moins que, Moins que ou égale à, Plus grand que, Plus grand que ou égale à	Est_Faux = (6 <= 4); 	 	
== != 	Comparaison : égale, Comparaison : inégale 	est_Faux= ("ce" == "cet"); 	 	
& 	AND bit à bit 	zero = 4 & 2;
quatre= 4 & 4; 	 	
^ 	XOR bit à bit 	zero = 4 ^ 4;
six= 4 ^ 2; 	 	
 	OR bit à bit 	 	 	
 	 	Comparaison : OU 	est_Vrai= (FALSE	TRUE);
&& 	Comparaison : ET 	est_Faux = (FALSE && TRUE); 	 	
= += -= *= /= %=	Affectation 	four = 4; 	 	
Note: L'ordre d'application des opérateurs booléens est très clair. Comme dans d'autres langages ( C++, Javascript etc.. ) l' opérateur && et l opérateur '||' ont des priorités égales entre eux . Utilisez des parenthèses pour renforcer votre ordre d évaluation
==+ Operateur==
resultat = gauche + droite
Type de gauche	Type de droite	Type du résultat	Description
integer 	integer 	integer 	Ajoute gauche et droite
integer 	float 	float 	Ajoute gauche et droite
float 	integer 	float 	Ajoute gauche et droite
string 	string 	string 	Concatène droite à la fin de gauche.
list 	* 	list 	Concatène droite à la fin de gauche.
* 	list 	list 	Attache gauche au début de droite.
vector 	vector 	vector 	Ajoute gauche et droite
rotation 	rotation 	rotation 	Ajoute gauche et droitePeu utile pour combiner des rotations, utilisez * or / à la place.
==Operateurs simplifiés==
Des alternatives au classique '='...
Operateur classique	Operateur simplifié
a = a + 1 	a += 1
a = a – 1 	a -= 1
a = a * (n+1) 	a *= (n+1)
a = a / (n+1) 	a /= (n+1)
a = a % b 	a %= b
LSL Operators/ja

演算子は、1個もしくは2個の被演算子に対して演算（もしくは数学的な作用）を実行するために用いられます。簡単で一般的な例として、1 + 2 の場合、1 と 2 が被演算子、 + が演算子です。
この概念は、被演算子に変数が利用できること（特殊な制約として代入演算子の左辺は変数でなければいけない）により、LSLでは大幅に拡張されました。 
演算子 	説明 	使用例 	 	
() 	小カッコ(Parenthesis) 	a * (b + c) 	 	
[] 	大カッコ(Brackets) リスト 	[a, 2, "this", 0.01] 	 	
(type) 	型キャスト 	message = "The result is:" + (string) result;	 	
! ~ ++ -- 	論理否定, ビット反転, インクリメント, デクリメント 	counter++; 	 	
* / % 	乗算/内積, 除算, 剰余/外積 	rollover = (count + 1)%5; 	 	
- 	減算 	one = 3 - 2; 	 	
+ 	加算 あるいは 文字列連結 	two = 1+1;
text = "Hello" + "World"; 	 	
+ 	配列の連結 	myList = [1, 2, 3] + [4, 5];
newList = oldList + addList;	 	
<< >> 	左シフト, 右シフト 	eight = 4 << 1; 	 	
< <= > >= 	未満, 以下, より大きい , 以上　 	isFalse = (6 <= 4); 	 	
== != 	等価比較, 不等価比較 	isFalse = ("this" == "that"); 	 	
& 	ビット演算 AND 	zero = 4 & 2;
four = 4 & 4; 	 	
^ 	ビット演算 XOR 	zero = 4 ^ 4;
six = 4 ^ 2; 	 	
 	ビット演算 OR 	 	 	
 	 	条件比較 OR 	isTrue = (FALSE	TRUE);
&& 	条件比較 AND 	isFalse = (FALSE && TRUE); 	 	
= += -= *= /= %=	代入 	four = 4; 	 	
Note: 他の多くのプログラミング言語と異なり、C 言語風の && および || という演算子は常に 両方の被演算子を評価します。例えば、
if (TRUE || 1/0) llSay( 0, "Aha!" );
は "Aha!" と表示する前に Math Error (除算エラー) を起こします。
Note: ブーリアン演算子の優先順位は不明瞭です。式解析の優先順位に矛盾を生んだり、もしくは単純に || と && の優先順位を同一と見なすかもしれないバグを含んでいるかもしれません。順位を明確にしたい場合は括弧 "()" で囲んでください。
Note: 条件文での評価は末尾から行なわれるようです。変数 x の値が 1 だった場合、以下の最初の二例は偽、最後の二例は真になります:
(x && (x = 0) == 0 && x)
(x && (x = 0) == 0 && x == 0)
(x == 0 && (x = 0) == 0)
(x == 0 && (x = 0) == 0 && x)
両辺の真偽に関わりなく、両辺とも評価されます。 
==+ 演算子==
result = left + right
Left の型 	Right の型 	Result の型 	説明
integer 	integer 	integer 	left と right を加算する
integer 	float 	float 	left と right を加算する
float 	integer 	float 	left と right を加算する
string 	string 	string 	left の末尾に right を連結する
list 	* 	list 	left の末尾に right を連結する
* 	list 	list 	left が right の先頭に新しい配列要素として追加される。
vector 	vector 	vector 	left と right を加算する
rotation 	rotation 	rotation 	left と right を加算する
あくまで演算例として。実際の回転の組み合わせでは * および / を使ってください。
==複合代入演算子==
単純代入演算子 '=' の代わりに、以下の方法を使えます: 
単純代入演算子 	複合代入演算子
a = a + 1 	a += 1
a = a – 1 	a -= 1
a = a * (n+1) 	a *= (n+1)
a = a / (n+1) 	a /= (n+1)
a = a % b 	a %= b
==ド・モルガンの法則==
 等価であるビット演算
AND 	OR
~(a & b) 	~a | ~b
~a & ~b 	~(a | b)
 	
a & ~b 	~(~a | b)
~(a & ~b)	~a | b
 等価である論理演算
AND 	OR
!(a && b) 	!a || !b
!a && !b 	!(a || b)
 	
a && !b 	!(!a || b)
!(a && !b)	!a || b
ド・モルガンの法則により、各行とも AND 列にあるコードは OR 列のそれと論理的に等価です。a と b は変数である必要は無く、演算式でも構いません。ある種の状況では、コードを簡略化するためにこの手法が使えます。これらの 2 セットを混同しないことが大切です。上 2 行はド・モルガンの法則をそのとおりに表現したものであり、下 2 行はそれから導き出したものです。
LSL Operators/ko

연산자는 (이를테면 ! 처럼) 하나 혹은 두 개의 피연산자에 작용(혹은 수학연산)을 가한다. 쉬운 예로 1 + 2 에서 1과 2는 피연산자이며 +은 연산자이다.
이것은 왼쪽에 피연산자인 변수가 위치하는 특수한 할당 연산자로 확장될 수 있다.
연산자 	설명 	용례 	 	
() [] . 	괄호, 대괄호, 점 	나중에 수행 (먼저 수행) 	 	
(유형) 	형변환 	message = "The result is:" + (string) result;	 	
! ~ ++ -- 	NOT, 여수, 증가, 감소 	counter++; 	 	
* / % 	곱(내적), 나누기, 절대치(외적) 	rollover = (count + 1)%5; 	 	
- 	빼기 	one = 3 - 2; 	 	
+ 	문자열을 더하거나 합치기 	two = 1+1;
text = "Hello" + "World"; 	 	
+ 	목록을 연결하기 	myList = [1, 2, 3] + [4, 5];
newList = oldList + addList;	 	
<< >> 	왼쪽 대입, 오른쪽 대입 	eight = 4 << 1; 	 	
< <= > >= 	작다, 작거나 같다, 크다, 크거나 같다 	isFalse = (6 <= 4); 	 	
== != 	동치, 같지 않음 	isFalse = ("this" == "that"); 	 	
& 	비트연산 AND 	zero = 4 & 2;
four = 4 & 4; 	 	
^ 	비트연산 XOR 	zero = 4 ^ 4;
six = 4 ^ 2; 	 	
 	비트연산 OR 	 	 	
 	 	비교연산 OR 	isTrue = (FALSE	TRUE);
&& 	비교연산 AND 	isFalse = (FALSE && TRUE); 	 	
= += -= *= /= %=	할당 	four = 4; 	 	
주의: C와 유사한 다른 언어들과는 달리 &&와 || 연산자에서, 양쪽 피연산자는 항상 평가된다. 예를 들면,
<lsl>if (TRUE || 1/0) llSay( 0, "Aha!" );</lsl> 
은 "Aha"를 말하는 대신 수학오류를 일으킨다.
주의: 부울 연산자의 우선 순위는 명확하지 않다. 표현 문석기에 우선권을 불완전하게 하거나, ||와 &&이 동일한 우선 순위를 갖는 버그가 있을 수 있다. 점검이 아직 결론내려지지 않았다. 그러므로 뭔가 미심쩍으면 괄호를 쓸 것.
주의: 평가의 순서는 다른 언어들에서와 마찬가지로 뒤에서부터이다. 다음 예제에서 x가 1부터 시작한다면 처음 두 줄은 거짓이며 그 다음 두 줄은 참이다:
<lsl>(x && (x = 0) == 0 && x)</lsl>
<lsl>(x && (x = 0) == 0 && x == 0)</lsl>
<lsl>(x == 0 && (x = 0) == 0)</lsl>
<lsl>(x == 0 && (x = 0) == 0 && x)</lsl>
양쪽이 각각의 참 여부와는 무관하게 모두 평가된다.
==+ 연산자==
결과 = 왼쪽 + 오른쪽
왼쪽 유형 	오른쪽 유형 	결과 유형 	설명
integer 	integer 	integer 	왼쪽과 오른쪽을 더함
integer 	float 	float 	왼쪽과 오른쪽을 더함
float 	integer 	float 	왼쪽과 오른쪽을 더함
string 	string 	string 	왼쪽의 끝에 오른쪽을 연결
list 	* 	list 	왼쪽의 끝에 오른쪽을 연결
* 	list 	list 	오른쪽의 앞에 첨부 왼쪽을 끼워넣음
vector 	vector 	vector 	왼쪽과 오른쪽을 더함
rotation 	rotation 	rotation 	왼쪽과 오른쪽을 더함회전을 더하는 데에 유용하지는 않다. 대신 * 혹은 / 을 사용할 것.
==축약 연산자==
기본적인 '=' 연산자 대신...
기본 할당 연산자 	축약 연산자
a = a + 1 	a += 1
a = a – 1 	a -= 1
a = a * (n+1) 	a *= (n+1)
a = a / (n+1) 	a /= (n+1)
a = a % b 	a %= b
== 비트연산 도움말 ==
 동치
AND 	OR
~(a & b) 	~a | ~b
~a & ~b 	~(a | b)
a & ~b 	~(~a | b)
~(a & ~b)	~a | b
왼쪽의 코드는 오른쪽의 코드와 일치한다. a와 b는 변수일 필요는 없다. 이런 방식은 복잡한 코드를 단순화시키는 데에 쓰일 수 있다.
LSL Operators/pl

Operatory służą do wykonywania działań (głównie matematycznych, ale nie tylko) na dwóch składnikach. Prostym przykładem jest 1 + 2, gdzie 1 i 2 są składnikami, a + jest operatorem (w tym przypadku działania dodawania)
To pojęcie jest rozszerzone w języku LSL, ponieważ składniki mogą być zmiennymi. Przypadkiem szczególnym jest tu operator przypisania, który wymaga żeby składnik z jego lewej strony był zmienną.
Operator 	Opis 	Przykład 	 	
() [] . 	Nawiasy, Nawiasy kwadratowe, Kropka 	Zrób to potem (a to najpierw) 	 	
(typ) 	Rzutowanie na typ 	message = "Wynik to:" + (string) wynik;	 	
! ~ ++ -- 	NOT, Dopełnienie, Zwiększenie, Zmniejszenie 	licznik++; 	 	
* / % 	Mnożenie/Iloczyn skalarny, Dzielenie, Wartość bezwzględna(moduł)/Iloczyn kartezjański	przepełnienie = (licznik + 1)%5; 	 	
- 	Odejmowanie 	jeden = 3 - 2; 	 	
+ 	Dodawanie lub Łączenie łańcuchów (konkatenacja) 	dwa = 1+1;
tekst = "Witaj" + "Świecie";	 	
+ 	Łączenie (konkatenacja) list 	mojaLista = [1, 2, 3] + [4, 5];
nowaLista = staraLista + dodanaLista;	 	
<< >> 	Przesunięcie (bitowe) w lewo, w prawo 	osiem = 4 << 1; 	 	
< <= > >= 	Mniejsze niż, Mniejsze niż lub równe,
Większe niż, Większe niż lub równe 	toFałsz = (6 <= 4); 	 	
== != 	Porównanie jest równe, nie jest równe 	toFałsz = ("this" == "that"); 	 	
& 	Bitowe AND 	zero = 4 & 2;
cztery = 4 & 4; 	 	
^ 	Bitowe XOR 	zero = 4 ^ 4;
sześć = 4 ^ 2; 	 	
 	Bitowe OR 	 	 	
 	 	Logiczne (boolowskie) OR 	toPrawda = (FALSE	TRUE);
&& 	Logiczne (boolowskie) AND 	toFałsz = (FALSE && TRUE); 	 	
= += -= *= /= %=	Przypisanie 	cztery = 4; 	 	
Uwaga: Kolejność operatorów logicznych (boolowskich) nie jest jasno określona. Możliwe że jest błąd w procesorze (parserze) wyrażeń, który powoduje brak spójności, albo || i && mają równe priorytety; Testy nie dają odpowiedzi. Jeżeli coś nie działa jak się spodziewasz, użyj nawiasów.
==+ Operator==
wynik = lewa + prawa
Typ lewej	Typ prawej	Typ Wyniku	Opis
integer 	integer 	integer 	Suma lewej i prawej
integer 	float 	float 	Suma lewej i prawej
float 	integer 	float 	Suma lewej i prawej
string 	string 	string 	Łączy (konkatenuje) prawą do końca lewej.
list 	* 	list 	Łączy (konkatenuje) prawą do końca lewej.
* 	list 	list 	Łączy (konkatenuje) lewą do początku prawej.
vector 	vector 	vector 	Dodaje (wektorowo) lewą do prawej
rotation 	rotation 	rotation 	Dodaje (wektorowo) lewą do prawejNie należy używać do składania obrotów! W zamian użyj * lub /.