[MIRROR] Staticpath [MDB ignore] (#12445)

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2026-02-22 16:33:43 -07:00
committed by GitHub
parent cc106f8032
commit ba5224fbcb
437 changed files with 5869 additions and 5220 deletions
+22 -22
View File
@@ -30,88 +30,88 @@
/*
Class: node
*/
/node/proc/ToString()
/datum/node/proc/ToString()
return "[src.type]"
/*
Class: identifier
*/
/node/identifier
/datum/node/identifier
var/id_name
/node/identifier/New(id)
/datum/node/identifier/New(id)
.=..()
src.id_name=id
/node/identifier/ToString()
/datum/node/identifier/ToString()
return id_name
/*
Class: expression
*/
/node/expression
/datum/node/expression
/*
Class: operator
See <Binary Operators> and <Unary Operators> for subtypes.
*/
/node/expression/op
var/node/expression/exp
/datum/node/expression/op
var/datum/node/expression/exp
var/tmp/name
var/tmp/precedence
/node/expression/op/New()
/datum/node/expression/op/New()
.=..()
if(!src.name) src.name="[src.type]"
/node/expression/op/ToString()
/datum/node/expression/op/ToString()
return "operator: [name]"
/*
Class: FunctionCall
*/
/node/expression/FunctionCall
/datum/node/expression/FunctionCall
//Function calls can also be expressions or statements.
var/func_name
var/node/identifier/object
var/datum/node/identifier/object
var/list/parameters = list()
/*
Class: literal
*/
/node/expression/value/literal
/datum/node/expression/value/literal
var/value
/node/expression/value/literal/New(value)
/datum/node/expression/value/literal/New(value)
.=..()
src.value=value
/node/expression/value/literal/ToString()
/datum/node/expression/value/literal/ToString()
return src.value
/*
Class: variable
*/
/node/expression/value/variable
var/node/object //Either a node/identifier or another node/expression/value/variable which points to the object
var/node/identifier/id
/datum/node/expression/value/variable
var/datum/node/object //Either a node/identifier or another node/expression/value/variable which points to the object
var/datum/node/identifier/id
/node/expression/value/variable/New(ident)
/datum/node/expression/value/variable/New(ident)
.=..()
id=ident
if(istext(id))id=new(id)
/node/expression/value/variable/ToString()
/datum/node/expression/value/variable/ToString()
return src.id.ToString()
/*
Class: reference
*/
/node/expression/value/reference
/datum/node/expression/value/reference
var/datum/value
/node/expression/value/reference/New(value)
/datum/node/expression/value/reference/New(value)
.=..()
src.value=value
/node/expression/value/reference/ToString()
/datum/node/expression/value/reference/ToString()
return "ref: [src.value] ([src.value.type])"
+4 -4
View File
@@ -8,7 +8,7 @@
it is possible to have a function definition inside of any type of block (such as in an if statement or another function),
and not just in the global scope as in many languages.
*/
/node/BlockDefinition
/datum/node/BlockDefinition
var/list/statements = list()
var/list/functions = list()
var/list/initial_variables = list()
@@ -24,7 +24,7 @@
See Also:
- <n_Interpreter.SetVar()>
*/
/node/BlockDefinition/proc/SetVar(name, value)
/datum/node/BlockDefinition/proc/SetVar(name, value)
initial_variables[name]=value
@@ -33,7 +33,7 @@
A block object representing the global scope.
*/
//
/node/BlockDefinition/GlobalBlock/New()
/datum/node/BlockDefinition/GlobalBlock/New()
initial_variables["null"]=null
return ..()
@@ -42,4 +42,4 @@
A block representing a function body.
*/
//
/node/BlockDefinition/FunctionBlock
/datum/node/BlockDefinition/FunctionBlock
@@ -7,8 +7,8 @@
Class: binary
Represents a binary operator in the AST. A binary operator takes two operands (ie x and y) and returns a value.
*/
/node/expression/op/binary
var/node/expression/exp2
/datum/node/expression/op/binary
var/datum/node/expression/exp2
////////// Comparison Operators //////////
/*
@@ -16,7 +16,7 @@
Returns true if x = y.
*/
//
/node/expression/op/binary/Equal
/datum/node/expression/op/binary/Equal
precedence=OOP_EQUAL
/*
@@ -24,7 +24,7 @@
Returns true if x and y aren't equal.
*/
//
/node/expression/op/binary/NotEqual
/datum/node/expression/op/binary/NotEqual
precedence=OOP_EQUAL
/*
@@ -32,7 +32,7 @@
Returns true if x > y.
*/
//
/node/expression/op/binary/Greater
/datum/node/expression/op/binary/Greater
precedence=OOP_COMPARE
/*
@@ -40,7 +40,7 @@
Returns true if x < y.
*/
//
/node/expression/op/binary/Less
/datum/node/expression/op/binary/Less
precedence=OOP_COMPARE
/*
@@ -48,7 +48,7 @@
Returns true if x >= y.
*/
//
/node/expression/op/binary/GreaterOrEqual
/datum/node/expression/op/binary/GreaterOrEqual
precedence=OOP_COMPARE
/*
@@ -56,7 +56,7 @@
Returns true if x <= y.
*/
//
/node/expression/op/binary/LessOrEqual
/datum/node/expression/op/binary/LessOrEqual
precedence=OOP_COMPARE
@@ -67,7 +67,7 @@
Returns true if x and y are true.
*/
//
/node/expression/op/binary/LogicalAnd
/datum/node/expression/op/binary/LogicalAnd
precedence=OOP_AND
/*
@@ -75,7 +75,7 @@
Returns true if x, y, or both are true.
*/
//
/node/expression/op/binary/LogicalOr
/datum/node/expression/op/binary/LogicalOr
precedence=OOP_OR
/*
@@ -83,7 +83,7 @@
Returns true if either x or y but not both are true.
*/
//
/node/expression/op/binary/LogicalXor //Not implemented in nS
/datum/node/expression/op/binary/LogicalXor //Not implemented in nS
precedence=OOP_OR
@@ -97,7 +97,7 @@
011 & 110 = 010
*/
//
/node/expression/op/binary/BitwiseAnd
/datum/node/expression/op/binary/BitwiseAnd
precedence=OOP_BIT
/*
@@ -108,7 +108,7 @@
011 | 110 = 111
*/
//
/node/expression/op/binary/BitwiseOr
/datum/node/expression/op/binary/BitwiseOr
precedence=OOP_BIT
/*
@@ -119,7 +119,7 @@
011 xor 110 = 101
*/
//
/node/expression/op/binary/BitwiseXor
/datum/node/expression/op/binary/BitwiseXor
precedence=OOP_BIT
@@ -130,7 +130,7 @@
Returns the sum of x and y.
*/
//
/node/expression/op/binary/Add
/datum/node/expression/op/binary/Add
precedence=OOP_ADD
/*
@@ -138,7 +138,7 @@
Returns the difference of x and y.
*/
//
/node/expression/op/binary/Subtract
/datum/node/expression/op/binary/Subtract
precedence=OOP_ADD
/*
@@ -146,7 +146,7 @@
Returns the product of x and y.
*/
//
/node/expression/op/binary/Multiply
/datum/node/expression/op/binary/Multiply
precedence=OOP_MULTIPLY
/*
@@ -154,7 +154,7 @@
Returns the quotient of x and y.
*/
//
/node/expression/op/binary/Divide
/datum/node/expression/op/binary/Divide
precedence=OOP_MULTIPLY
/*
@@ -162,7 +162,7 @@
Returns x raised to the power of y.
*/
//
/node/expression/op/binary/Power
/datum/node/expression/op/binary/Power
precedence=OOP_POW
/*
@@ -170,5 +170,5 @@
Returns the remainder of x / y.
*/
//
/node/expression/op/binary/Modulo
/datum/node/expression/op/binary/Modulo
precedence=OOP_MULTIPLY
@@ -5,7 +5,7 @@
Class: unary
Represents a unary operator in the AST. Unary operators take a single operand (referred to as x below) and return a value.
*/
/node/expression/op/unary
/datum/node/expression/op/unary
precedence=OOP_UNARY
/*
@@ -16,7 +16,7 @@
!true = false and !false = true
*/
//
/node/expression/op/unary/LogicalNot
/datum/node/expression/op/unary/LogicalNot
name="logical not"
/*
@@ -27,7 +27,7 @@
~10 (decimal 2) = 01 (decimal 1).
*/
//
/node/expression/op/unary/BitwiseNot
/datum/node/expression/op/unary/BitwiseNot
name="bitwise not"
/*
@@ -35,7 +35,7 @@
Returns -x.
*/
//
/node/expression/op/unary/Minus
/datum/node/expression/op/unary/Minus
name="minus"
/*
@@ -43,9 +43,9 @@
A special unary operator representing a value in parentheses.
*/
//
/node/expression/op/unary/group
/datum/node/expression/op/unary/group
precedence=OOP_GROUP
/node/expression/op/unary/New(node/expression/exp)
/datum/node/expression/op/unary/New(datum/node/expression/exp)
src.exp=exp
return ..()
+28 -28
View File
@@ -5,15 +5,15 @@
Class: statement
An object representing a single instruction run by an interpreter.
*/
/node/statement
/datum/node/statement
/*
Class: FunctionCall
Represents a call to a function.
*/
//
/node/statement/FunctionCall
/datum/node/statement/FunctionCall
var/func_name
var/node/identifier/object
var/datum/node/identifier/object
var/list/parameters=list()
/*
@@ -21,10 +21,10 @@
Defines a function.
*/
//
/node/statement/FunctionDefinition
/datum/node/statement/FunctionDefinition
var/func_name
var/list/parameters=list()
var/node/BlockDefinition/FunctionBlock/block
var/datum/node/BlockDefinition/FunctionBlock/block
/*
Class: VariableAssignment
@@ -38,10 +38,10 @@
- <VariableDeclaration>
*/
//
/node/statement/VariableAssignment
var/node/identifier/object
var/node/identifier/var_name
var/node/expression/value
/datum/node/statement/VariableAssignment
var/datum/node/identifier/object
var/datum/node/identifier/var_name
var/datum/node/expression/value
/*
Class: VariableDeclaration
@@ -51,56 +51,56 @@
- <VariableAssignment>
*/
//
/node/statement/VariableDeclaration
var/node/identifier/object
var/node/identifier/var_name
/datum/node/statement/VariableDeclaration
var/datum/node/identifier/object
var/datum/node/identifier/var_name
/*
Class: IfStatement
*/
//
/node/statement/IfStatement
var/node/BlockDefinition/block
var/node/BlockDefinition/else_block // may be null
var/node/expression/cond
/datum/node/statement/IfStatement
var/datum/node/BlockDefinition/block
var/datum/node/BlockDefinition/else_block // may be null
var/datum/node/expression/cond
/*
Class: WhileLoop
Loops while a given condition is true.
*/
//
/node/statement/WhileLoop
var/node/BlockDefinition/block
var/node/expression/cond
/datum/node/statement/WhileLoop
var/datum/node/BlockDefinition/block
var/datum/node/expression/cond
/*
Class: ForLoop
Loops while test is true, initializing a variable, increasing the variable
*/
/node/statement/ForLoop
var/node/BlockDefinition/block
var/node/expression/test
var/node/expression/init
var/node/expression/increment
/datum/node/statement/ForLoop
var/datum/node/BlockDefinition/block
var/datum/node/expression/test
var/datum/node/expression/init
var/datum/node/expression/increment
/*
Class: BreakStatement
Ends a loop.
*/
//
/node/statement/BreakStatement
/datum/node/statement/BreakStatement
/*
Class: ContinueStatement
Skips to the next iteration of a loop.
*/
//
/node/statement/ContinueStatement
/datum/node/statement/ContinueStatement
/*
Class: ReturnStatement
Ends the function and returns a value.
*/
//
/node/statement/ReturnStatement
var/node/expression/value
/datum/node/statement/ReturnStatement
var/datum/node/expression/value