Moar whitespace normalization [MDB IGNORE] (#7750)

Co-authored-by: Raeschen <rycoop29@gmail.com>
This commit is contained in:
Drathek
2024-02-16 01:54:47 -08:00
committed by GitHub
parent eecf6bbff9
commit 3995338290
1177 changed files with 550902 additions and 550902 deletions

View File

@@ -1,128 +1,128 @@
/*
File: AST Nodes
An abstract syntax tree (AST) is a representation of source code in a computer-friendly format. It is composed of nodes,
each of which represents a certain part of the source code. For example, an <IfStatement> node represents an if statement in the
script's source code. Because it is a representation of the source code in memory, it is independent of any specific scripting language.
This allows a script in any language for which a parser exists to be run by the interpreter.
The AST is produced by an <n_Parser> object. It consists of a <GlobalBlock> with an arbitrary amount of statements. These statements are
run in order by an <n_Interpreter> object. A statement may in turn run another block (such as an if statement might if its condition is
met).
Articles:
- <http://en.wikipedia.org/wiki/Abstract_syntax_tree>
*/
var
const
/*
Constants: Operator Precedence
OOP_OR - Logical or
OOP_AND - Logical and
OOP_BIT - Bitwise operations
OOP_EQUAL - Equality checks
OOP_COMPARE - Greater than, less then, etc
OOP_ADD - Addition and subtraction
OOP_MULTIPLY - Multiplication and division
OOP_POW - Exponents
OOP_UNARY - Unary Operators
OOP_GROUP - Parentheses
*/
OOP_OR = 1 //||
OOP_AND = OOP_OR + 1 //&&
OOP_BIT = OOP_AND + 1 //&, |
OOP_EQUAL = OOP_BIT + 1 //==, !=
OOP_COMPARE = OOP_EQUAL + 1 //>, <, >=, <=
OOP_ADD = OOP_COMPARE + 1 //+, -
OOP_MULTIPLY= OOP_ADD + 1 //*, /, %
OOP_POW = OOP_MULTIPLY+ 1 //^
OOP_UNARY = OOP_POW + 1 //!
OOP_GROUP = OOP_UNARY + 1 //()
/*
Class: node
*/
/node/proc/ToString()
return "[src.type]"
/*
Class: identifier
*/
/node/identifier
var/id_name
/node/identifier/New(id)
.=..()
src.id_name=id
/node/identifier/ToString()
return id_name
/*
Class: expression
*/
/node/expression
/*
Class: operator
See <Binary Operators> and <Unary Operators> for subtypes.
*/
/node/expression/op
var/node/expression/exp
var/tmp/name
var/tmp/precedence
/node/expression/op/New()
.=..()
if(!src.name) src.name="[src.type]"
/node/expression/op/ToString()
return "operator: [name]"
/*
Class: FunctionCall
*/
/node/expression/FunctionCall
//Function calls can also be expressions or statements.
var/func_name
var/node/identifier/object
var/list/parameters = list()
/*
Class: literal
*/
/node/expression/value/literal
var/value
/node/expression/value/literal/New(value)
.=..()
src.value=value
/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
/node/expression/value/variable/New(ident)
.=..()
id=ident
if(istext(id))id=new(id)
/node/expression/value/variable/ToString()
return src.id.ToString()
/*
Class: reference
*/
/node/expression/value/reference
var/datum/value
/node/expression/value/reference/New(value)
.=..()
src.value=value
/node/expression/value/reference/ToString()
return "ref: [src.value] ([src.value.type])"
/*
File: AST Nodes
An abstract syntax tree (AST) is a representation of source code in a computer-friendly format. It is composed of nodes,
each of which represents a certain part of the source code. For example, an <IfStatement> node represents an if statement in the
script's source code. Because it is a representation of the source code in memory, it is independent of any specific scripting language.
This allows a script in any language for which a parser exists to be run by the interpreter.
The AST is produced by an <n_Parser> object. It consists of a <GlobalBlock> with an arbitrary amount of statements. These statements are
run in order by an <n_Interpreter> object. A statement may in turn run another block (such as an if statement might if its condition is
met).
Articles:
- <http://en.wikipedia.org/wiki/Abstract_syntax_tree>
*/
var
const
/*
Constants: Operator Precedence
OOP_OR - Logical or
OOP_AND - Logical and
OOP_BIT - Bitwise operations
OOP_EQUAL - Equality checks
OOP_COMPARE - Greater than, less then, etc
OOP_ADD - Addition and subtraction
OOP_MULTIPLY - Multiplication and division
OOP_POW - Exponents
OOP_UNARY - Unary Operators
OOP_GROUP - Parentheses
*/
OOP_OR = 1 //||
OOP_AND = OOP_OR + 1 //&&
OOP_BIT = OOP_AND + 1 //&, |
OOP_EQUAL = OOP_BIT + 1 //==, !=
OOP_COMPARE = OOP_EQUAL + 1 //>, <, >=, <=
OOP_ADD = OOP_COMPARE + 1 //+, -
OOP_MULTIPLY= OOP_ADD + 1 //*, /, %
OOP_POW = OOP_MULTIPLY+ 1 //^
OOP_UNARY = OOP_POW + 1 //!
OOP_GROUP = OOP_UNARY + 1 //()
/*
Class: node
*/
/node/proc/ToString()
return "[src.type]"
/*
Class: identifier
*/
/node/identifier
var/id_name
/node/identifier/New(id)
.=..()
src.id_name=id
/node/identifier/ToString()
return id_name
/*
Class: expression
*/
/node/expression
/*
Class: operator
See <Binary Operators> and <Unary Operators> for subtypes.
*/
/node/expression/op
var/node/expression/exp
var/tmp/name
var/tmp/precedence
/node/expression/op/New()
.=..()
if(!src.name) src.name="[src.type]"
/node/expression/op/ToString()
return "operator: [name]"
/*
Class: FunctionCall
*/
/node/expression/FunctionCall
//Function calls can also be expressions or statements.
var/func_name
var/node/identifier/object
var/list/parameters = list()
/*
Class: literal
*/
/node/expression/value/literal
var/value
/node/expression/value/literal/New(value)
.=..()
src.value=value
/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
/node/expression/value/variable/New(ident)
.=..()
id=ident
if(istext(id))id=new(id)
/node/expression/value/variable/ToString()
return src.id.ToString()
/*
Class: reference
*/
/node/expression/value/reference
var/datum/value
/node/expression/value/reference/New(value)
.=..()
src.value=value
/node/expression/value/reference/ToString()
return "ref: [src.value] ([src.value.type])"

View File

@@ -1,45 +1,45 @@
/*
File: Block Types
*/
/*
Class: BlockDefinition
An object representing a set of actions to perform independently from the rest of the script. Blocks are basically just
lists of statements to execute which also contain some local variables and methods. Note that since functions are local to a block,
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
var/list/statements = list()
var/list/functions = list()
var/list/initial_variables = list()
/*
Proc: SetVar
Defines a permanent variable. The variable will not be deleted when it goes out of scope.
Notes:
Since all pre-existing temporary variables are deleted, it is not generally desirable to use this proc after the interpreter has been instantiated.
Instead, use <n_Interpreter.SetVar()>.
See Also:
- <n_Interpreter.SetVar()>
*/
/node/BlockDefinition/proc/SetVar(name, value)
initial_variables[name]=value
/*
Class: GlobalBlock
A block object representing the global scope.
*/
//
/node/BlockDefinition/GlobalBlock/New()
initial_variables["null"]=null
return ..()
/*
Class: FunctionBlock
A block representing a function body.
*/
//
/*
File: Block Types
*/
/*
Class: BlockDefinition
An object representing a set of actions to perform independently from the rest of the script. Blocks are basically just
lists of statements to execute which also contain some local variables and methods. Note that since functions are local to a block,
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
var/list/statements = list()
var/list/functions = list()
var/list/initial_variables = list()
/*
Proc: SetVar
Defines a permanent variable. The variable will not be deleted when it goes out of scope.
Notes:
Since all pre-existing temporary variables are deleted, it is not generally desirable to use this proc after the interpreter has been instantiated.
Instead, use <n_Interpreter.SetVar()>.
See Also:
- <n_Interpreter.SetVar()>
*/
/node/BlockDefinition/proc/SetVar(name, value)
initial_variables[name]=value
/*
Class: GlobalBlock
A block object representing the global scope.
*/
//
/node/BlockDefinition/GlobalBlock/New()
initial_variables["null"]=null
return ..()
/*
Class: FunctionBlock
A block representing a function body.
*/
//
/node/BlockDefinition/FunctionBlock

View File

@@ -1,174 +1,174 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
/*
File: Binary Operators
*/
/*
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
////////// Comparison Operators //////////
/*
Class: Equal
Returns true if x = y.
*/
//
/node/expression/op/binary/Equal
precedence=OOP_EQUAL
/*
Class: NotEqual
Returns true if x and y aren't equal.
*/
//
/node/expression/op/binary/NotEqual
precedence=OOP_EQUAL
/*
Class: Greater
Returns true if x > y.
*/
//
/node/expression/op/binary/Greater
precedence=OOP_COMPARE
/*
Class: Less
Returns true if x < y.
*/
//
/node/expression/op/binary/Less
precedence=OOP_COMPARE
/*
Class: GreaterOrEqual
Returns true if x >= y.
*/
//
/node/expression/op/binary/GreaterOrEqual
precedence=OOP_COMPARE
/*
Class: LessOrEqual
Returns true if x <= y.
*/
//
/node/expression/op/binary/LessOrEqual
precedence=OOP_COMPARE
////////// Logical Operators //////////
/*
Class: LogicalAnd
Returns true if x and y are true.
*/
//
/node/expression/op/binary/LogicalAnd
precedence=OOP_AND
/*
Class: LogicalOr
Returns true if x, y, or both are true.
*/
//
/node/expression/op/binary/LogicalOr
precedence=OOP_OR
/*
Class: LogicalXor
Returns true if either x or y but not both are true.
*/
//
/node/expression/op/binary/LogicalXor //Not implemented in nS
precedence=OOP_OR
////////// Bitwise Operators //////////
/*
Class: BitwiseAnd
Performs a bitwise and operation.
Example:
011 & 110 = 010
*/
//
/node/expression/op/binary/BitwiseAnd
precedence=OOP_BIT
/*
Class: BitwiseOr
Performs a bitwise or operation.
Example:
011 | 110 = 111
*/
//
/node/expression/op/binary/BitwiseOr
precedence=OOP_BIT
/*
Class: BitwiseXor
Performs a bitwise exclusive or operation.
Example:
011 xor 110 = 101
*/
//
/node/expression/op/binary/BitwiseXor
precedence=OOP_BIT
////////// Arithmetic Operators //////////
/*
Class: Add
Returns the sum of x and y.
*/
//
/node/expression/op/binary/Add
precedence=OOP_ADD
/*
Class: Subtract
Returns the difference of x and y.
*/
//
/node/expression/op/binary/Subtract
precedence=OOP_ADD
/*
Class: Multiply
Returns the product of x and y.
*/
//
/node/expression/op/binary/Multiply
precedence=OOP_MULTIPLY
/*
Class: Divide
Returns the quotient of x and y.
*/
//
/node/expression/op/binary/Divide
precedence=OOP_MULTIPLY
/*
Class: Power
Returns x raised to the power of y.
*/
//
/node/expression/op/binary/Power
precedence=OOP_POW
/*
Class: Modulo
Returns the remainder of x / y.
*/
//
/node/expression/op/binary/Modulo
precedence=OOP_MULTIPLY
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
/*
File: Binary Operators
*/
/*
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
////////// Comparison Operators //////////
/*
Class: Equal
Returns true if x = y.
*/
//
/node/expression/op/binary/Equal
precedence=OOP_EQUAL
/*
Class: NotEqual
Returns true if x and y aren't equal.
*/
//
/node/expression/op/binary/NotEqual
precedence=OOP_EQUAL
/*
Class: Greater
Returns true if x > y.
*/
//
/node/expression/op/binary/Greater
precedence=OOP_COMPARE
/*
Class: Less
Returns true if x < y.
*/
//
/node/expression/op/binary/Less
precedence=OOP_COMPARE
/*
Class: GreaterOrEqual
Returns true if x >= y.
*/
//
/node/expression/op/binary/GreaterOrEqual
precedence=OOP_COMPARE
/*
Class: LessOrEqual
Returns true if x <= y.
*/
//
/node/expression/op/binary/LessOrEqual
precedence=OOP_COMPARE
////////// Logical Operators //////////
/*
Class: LogicalAnd
Returns true if x and y are true.
*/
//
/node/expression/op/binary/LogicalAnd
precedence=OOP_AND
/*
Class: LogicalOr
Returns true if x, y, or both are true.
*/
//
/node/expression/op/binary/LogicalOr
precedence=OOP_OR
/*
Class: LogicalXor
Returns true if either x or y but not both are true.
*/
//
/node/expression/op/binary/LogicalXor //Not implemented in nS
precedence=OOP_OR
////////// Bitwise Operators //////////
/*
Class: BitwiseAnd
Performs a bitwise and operation.
Example:
011 & 110 = 010
*/
//
/node/expression/op/binary/BitwiseAnd
precedence=OOP_BIT
/*
Class: BitwiseOr
Performs a bitwise or operation.
Example:
011 | 110 = 111
*/
//
/node/expression/op/binary/BitwiseOr
precedence=OOP_BIT
/*
Class: BitwiseXor
Performs a bitwise exclusive or operation.
Example:
011 xor 110 = 101
*/
//
/node/expression/op/binary/BitwiseXor
precedence=OOP_BIT
////////// Arithmetic Operators //////////
/*
Class: Add
Returns the sum of x and y.
*/
//
/node/expression/op/binary/Add
precedence=OOP_ADD
/*
Class: Subtract
Returns the difference of x and y.
*/
//
/node/expression/op/binary/Subtract
precedence=OOP_ADD
/*
Class: Multiply
Returns the product of x and y.
*/
//
/node/expression/op/binary/Multiply
precedence=OOP_MULTIPLY
/*
Class: Divide
Returns the quotient of x and y.
*/
//
/node/expression/op/binary/Divide
precedence=OOP_MULTIPLY
/*
Class: Power
Returns x raised to the power of y.
*/
//
/node/expression/op/binary/Power
precedence=OOP_POW
/*
Class: Modulo
Returns the remainder of x / y.
*/
//
/node/expression/op/binary/Modulo
precedence=OOP_MULTIPLY

View File

@@ -1,51 +1,51 @@
/*
File: Unary Operators
*/
/*
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
precedence=OOP_UNARY
/*
Class: LogicalNot
Returns !x.
Example:
!true = false and !false = true
*/
//
/node/expression/op/unary/LogicalNot
name="logical not"
/*
Class: BitwiseNot
Returns the value of a bitwise not operation performed on x.
Example:
~10 (decimal 2) = 01 (decimal 1).
*/
//
/node/expression/op/unary/BitwiseNot
name="bitwise not"
/*
Class: Minus
Returns -x.
*/
//
/node/expression/op/unary/Minus
name="minus"
/*
Class: group
A special unary operator representing a value in parentheses.
*/
//
/node/expression/op/unary/group
precedence=OOP_GROUP
/node/expression/op/unary/New(node/expression/exp)
src.exp=exp
return ..()
/*
File: Unary Operators
*/
/*
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
precedence=OOP_UNARY
/*
Class: LogicalNot
Returns !x.
Example:
!true = false and !false = true
*/
//
/node/expression/op/unary/LogicalNot
name="logical not"
/*
Class: BitwiseNot
Returns the value of a bitwise not operation performed on x.
Example:
~10 (decimal 2) = 01 (decimal 1).
*/
//
/node/expression/op/unary/BitwiseNot
name="bitwise not"
/*
Class: Minus
Returns -x.
*/
//
/node/expression/op/unary/Minus
name="minus"
/*
Class: group
A special unary operator representing a value in parentheses.
*/
//
/node/expression/op/unary/group
precedence=OOP_GROUP
/node/expression/op/unary/New(node/expression/exp)
src.exp=exp
return ..()

View File

@@ -1,106 +1,106 @@
/*
File: Statement Types
*/
/*
Class: statement
An object representing a single instruction run by an interpreter.
*/
/node/statement
/*
Class: FunctionCall
Represents a call to a function.
*/
//
/node/statement/FunctionCall
var/func_name
var/node/identifier/object
var/list/parameters=list()
/*
Class: FunctionDefinition
Defines a function.
*/
//
/node/statement/FunctionDefinition
var/func_name
var/list/parameters=list()
var/node/BlockDefinition/FunctionBlock/block
/*
Class: VariableAssignment
Sets a variable in an accessible scope to the given value if one exists, otherwise initializes a new local variable to the given value.
Notes:
If a variable with the same name exists in a higher block, the value will be assigned to it. If not,
a new variable is created in the current block. To force creation of a new variable, use <VariableDeclaration>.
See Also:
- <VariableDeclaration>
*/
//
/node/statement/VariableAssignment
var/node/identifier/object
var/node/identifier/var_name
var/node/expression/value
/*
Class: VariableDeclaration
Intializes a local variable to a null value.
See Also:
- <VariableAssignment>
*/
//
/node/statement/VariableDeclaration
var/node/identifier/object
var/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
/*
Class: WhileLoop
Loops while a given condition is true.
*/
//
/node/statement/WhileLoop
var/node/BlockDefinition/block
var/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
/*
Class: BreakStatement
Ends a loop.
*/
//
/node/statement/BreakStatement
/*
Class: ContinueStatement
Skips to the next iteration of a loop.
*/
//
/node/statement/ContinueStatement
/*
Class: ReturnStatement
Ends the function and returns a value.
*/
//
/node/statement/ReturnStatement
/*
File: Statement Types
*/
/*
Class: statement
An object representing a single instruction run by an interpreter.
*/
/node/statement
/*
Class: FunctionCall
Represents a call to a function.
*/
//
/node/statement/FunctionCall
var/func_name
var/node/identifier/object
var/list/parameters=list()
/*
Class: FunctionDefinition
Defines a function.
*/
//
/node/statement/FunctionDefinition
var/func_name
var/list/parameters=list()
var/node/BlockDefinition/FunctionBlock/block
/*
Class: VariableAssignment
Sets a variable in an accessible scope to the given value if one exists, otherwise initializes a new local variable to the given value.
Notes:
If a variable with the same name exists in a higher block, the value will be assigned to it. If not,
a new variable is created in the current block. To force creation of a new variable, use <VariableDeclaration>.
See Also:
- <VariableDeclaration>
*/
//
/node/statement/VariableAssignment
var/node/identifier/object
var/node/identifier/var_name
var/node/expression/value
/*
Class: VariableDeclaration
Intializes a local variable to a null value.
See Also:
- <VariableAssignment>
*/
//
/node/statement/VariableDeclaration
var/node/identifier/object
var/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
/*
Class: WhileLoop
Loops while a given condition is true.
*/
//
/node/statement/WhileLoop
var/node/BlockDefinition/block
var/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
/*
Class: BreakStatement
Ends a loop.
*/
//
/node/statement/BreakStatement
/*
Class: ContinueStatement
Skips to the next iteration of a loop.
*/
//
/node/statement/ContinueStatement
/*
Class: ReturnStatement
Ends the function and returns a value.
*/
//
/node/statement/ReturnStatement
var/node/expression/value