-
Notifications
You must be signed in to change notification settings - Fork 8
Brom Bresenham edited this page Mar 19, 2025
·
23 revisions
Link | Description |
---|---|
+ - * / % ^
|
Arithmetic Operators |
== += -= *= /= %= ^= &= |= ~= :<<:= :>>:= :>>>:= .=
|
Assignment Operators |
& | ~ ! :<<: :>>: :>>>:
|
Bitwise Operators |
== != < <= > >=
|
Comparison Operators |
` | |
&& |
Operand And |
. |
Context Access Operator |
?. |
Conditional Access Operator |
.[...] |
Context Block Operator |
?.[...] |
Conditional Context Block Operator |
->Type ->(as Type)
|
Conversion Operators |
(...) |
Expression Grouping Operator |
(value1,value2...) (name1:value1,...)
|
Tuple Creation |
[...] |
Indexed Access Operator |
?[...] |
Conditional Indexed Access Operator |
// |
String-Indexed Access Operator |
?// |
Conditional String-Indexed Access Operator |
and or xor not ?
|
Logical Operators |
.. ..< ..> downTo
|
Range Operators |
is is not
|
Reference Comparison Operators |
++ --
|
Stepper Operators |
instanceOf isType $isCompound $isPrimitive $isReference
|
Type Evaluation Operators |
=> |
obj => m creates a callback function that calls obj.m(...) when invoked. |
?=> |
obj ?=> m creates a callback function using a weak reference to the context object. |
@[...] |
Creates a Variant list using the same internal syntax as a JSON array. |
@{...} |
Creates a Variant table using the same internal syntax as a JSON object. With key:value pairs, the key can be either a literal string or an identifier (local person = @{ name:{first:"Brom",last:"Bresenham"}, id:1 } ). |
&flag_param , &default_param=<value>
|
This is the named argument, flag parameter, and default parameter syntax used for Named Arguments in method calls and methods. |
@property_name |
Performs a direct property access that bypasses getter and setter methods. |
%value |
Calls description() on the value if non-null or else evaluates to literal String "null" . |
<<TypeName>> |
Returns the TypeInfo metaclass of the specified type name. Part of Rogue's Introspection (AKA Reflection) system. |
[abstract] |
[abstract] classes cannot be instantiated, but they can be extended and they can be used as object reference types. [abstract] methods have a signature (specification) but no statements (definition). They must be overridden in an extended class or else the extended class must also be [abstract] . Classes containing [abstract] methods must in turn be declared [abstract] . |
[append] |
Aspects and Augments can mark methods as [append] , which merges them with any existing method in the target class. |
$api |
Meta-command that gives selected classes or libraries the [api] attribute. |
[api] | A library marked [api] ensures that all classes within the library are given the [api] attribute. A class marked [api] ensures the class and all of its methods are marked [essential] , which makes them part of the transpiled C output. |
aspect | Aspects are similar to Java interfaces but also allow for property and method definitions. |
assert | In --debug mode , assert <expression> throws an AssertionError if the given expression is not truthy. In release mode no check is performed. |
augment | Augments can modify classes outside of their original definitions. This can be used for separation of concerns or to patch a class definition. |
[bitflags] | An enum with the [bitflags] attribute defines its category values as powers of two - 1,2,4,8,... instead of 0,1,2,3,... . |
block | An independently-scoped block of code. |
Byte | Unsigned 8-bit integer (unsigned char). |
CATEGORIES | The default class section for an enum . |
Character | Unsigned 32-bit value designed to hold Unicode characters. |
class | Define a new datatype as a standard object class or a pass-by-value compound class. |
Comments |
# single-line , #{...multi-line...}# , ----...HR comment... , ====...HR comment... . |
Compounds | Compounds are pass-by-value objects. |
contingent |
contingent control structure (contingent / necessary / sufficient / escapeContingent / satisfied / unsatisfied / endContingent ). |
Conversion Methods | Methods that define how conversions between various types are performed. |
$defaultValue<<OfType>> | A templated command that evaluates to the default value of a given type (0/false/null/etc.). |
$define | Define an identifier as an arbitrary expression. |
ensure<<variable>>(args) | A templated command that creates and assigns a new object if the given reference variable is null or zero. |
enum | Create an enumerated type. |
escapeBlock escapeContingent escapeForEach escapeIf escapeLoop escapeTry escapeWhile | Escape commands analogous to break in C-family languages. |
[essential] | An [essential] class is included in the transpiled C output even if it is unused. If a class is an [essential singleton] then the singleton is created on launch instead of on first use. Unused methods will be culled from an [essential] class unless the methods are marked [essential] as well. Giving a class the [api] attribute makes the class and all of its methods [essential] . |
$exists<<...>> | Templated meta-command the evaluates to true or false depending on whether the enclosed access commmand is valid. Valid access commands are TypeName , Constructor(...) , and object.access(...) . |
[export] | A uses attribute which specifies that a library used by this library is also automatically used by any other libraries that use this library. |
[faux] | A property attribute used to create a Rogue-side reflection of a native property. |
$fileBytes(...) | Meta-command that loads a file as a Byte[] list at compile time. |
$fileString(...) | Meta-command that loads a file as a literal String at compile time. |
forEach | A control structure to iterate over all the values in a collection or a numerical range. |
Function | Defines a function type. |
function | Defines a function. |
Functors | Convenience syntax that allows objects to be used like functions. If a class defines a method call(...) , then writing obj(...) translates into obj.call(...) . |
GLOBAL METHODS | Begins a class section that defines global methods (AKA static methods). |
GLOBAL PROPERTIES | Begins a class section that defines global properties (AKA static properties). |
<GlobalID> |
A GlobalID program-global enumeration. |
$id(...) | Meta-command that concatenates and converts one or more tokens into an "identifier" token. |
if/elseIf/else/endIf | Standard conditional control structure. |
if-local | Similar to Swift's if-let . |
$include | Includes the specified file as part of the project. |
$includeFolder | Recursively includes .rogue source files in a specified folder. |
instanceOf | Type evaluation operator. |
[insert] |
Aspects and Augments can mark methods as [insert] , which merges them with any existing method in the target class. |
$isCompound<<Type>> | Type evaluation operator. |
$isDefined(...) | Evaluates to true if the specified ID has been $define d, or false if not. |
$isEnum<<Type>> | Type evaluation operator. |
$isPrimitive<<Type>> | Type evaluation operator. |
$isReference<<Type>> | Type evaluation operator. |
isType | Type evaluation operator. |
Int32 | 32-bit integer (int). |
Int64 | 64-bit integer (long long int). |
Lists | Rogue uses mutable arrays called Lists (AKA array-lists). |
local | Declares local variables. |
$localDefine | A define that is scope-limited to the remainder of the current file. |
$localMacro | A macro that is scope-limited to the remainder of the current file. |
localize |
localize x is shorthand for local x = x . It's a more elegant way to cache a local copy of a property or method call. Syntax: localize var1 [, var2, ...]
|
Logical |
true or false (boolean). |
loop/loop(n)/endLoop | Simple loop structure for infinite loops and fixed count loops. |
$lowercase(...) | Meta-command that concatenates and converts one or more tokens into a literal lowercase string token. |
$macro | Create a function-style macro that replaces its call with a parameterized code block. |
METHODS | Begins a class section containing object methods. |
library | Sets the library (namespace) that any following program elements will belong to. |
mutating | Allows a compound method to alter properties of this compound. |
NATIVE | Begins a native code class section. |
native "..." | Specifies a native property belonging to a class. |
native(...) | An inline native expression. |
nativeHeader | Arbitrary code written to the generated .h file. |
nativeCode | Arbitrary code written to the generated .c file (or .cpp etc.). |
nativeType | Defines a datatype that can be used to pass native values of an arbitrary C type between Rogue and C. |
necessary | Conditional control change for the enclosing contingent . |
new<<expression>>(args) | Templated operator that uses the type of the template expression to create a new object. |
nextIteration | Proceeds to the next iteration of the current loop, skipping any remaining statements in the current iteration. Analogous to continue in C-family languages. |
null | A null object reference. |
Operator Methods | Methods that allow math operators (+ , - , etc.) to be used with objects and compounds. |
Optional Types | Any type name ending with ? is an optional type. |
[preferred] | A [preferred] method will be chosen among otherwise ambiguous methods when resolving a call. |
Primitives | Built-in pass-by-value variable types: Logical, Byte, Character, Int32, Int64, Real32, Real64. |
Print one or more expressions to the standard output. | |
println | Print zero or more expressions to the standard output followed by a newline. |
prior | Calls the overridden version of a method. Known as super in some languages. |
prior<<BaseType/>/> | Calls the overridden version of a method. Known as super in some languages. |
[propagated] | A [propagated] method is treated as an override in extended classes instead of being inherited, which affects the types of this , $thisType , and ThisType . |
PROPERTIES | A class section that declares object properties (instance variables/member variables). |
Real32 | 32-bit real number (float). |
Real64 | 64-bit real number (double). |
$requireRogue | Specifies the minimum version of Rogue required to compile. |
return | Terminates execution of the current method or routine, optionally returning a value. |
$rogueVersion | Evaluates to a string containing the version of Rogue supported by the compiler. |
roguec | The Rogue compiler. |
routine | A global-scope/library-scope procedure (AKA function). |
satisfied | A contingent clause executed when a contingent has a sufficient condition or if all contingent statements execute with all necessary conditions evaluating to true . |
singleton | Allows the type name to be used as a reference to a singleton object of that type. |
$sourceFilepath | Evaluates to the String filepath of the current source file. |
$sourceLine | Evaluates to the Int32 current line number. |
STATES | Begins a class section of state machine syntax. |
$string(...) | Meta-command that concatenates and converts one or more tokens into a literal string token. |
String | Built-in variable type for storing text. |
subclass | Begins an anonymous subclass definition. |
sufficient | Conditional control change for the enclosing contingent . |
swapValues |
swapValues(a,b) exchanges the values of variables a and b . |
Tables | Rogue uses Tables to implement key-value collections (AKA dictionaries or maps). |
$target(...) | Compile-time check to determine if a particular compile target has been specified. |
temporarily | Temporarily reassigns an existing value within the scope of this control structure. |
$thisModule |
Meta-identifier that gets replaced with the name of the current library. Most useful in macros. |
$thisType |
A special type name that resolves to the current type context before aspect methods are incorporated. Operates at the token level. More flexible than ThisType (allowing for $thisType[] etc.) but in aspects is constrained to reference the aspect type rather than the incorporating class type. |
ThisType | A special type name that resolves to the current type context after aspect methods are incorporated. Operates at the AST node level. Less flexible than $thisType (cannot write ThisType[] etc.) but when used in aspects methods, refers to the incorporating class type rather than the aspect type. |
throw | Throws an exception that can be handled with a try/catch further up the call stack. |
trace | Print debug info. |
try/catch | Exception handling. |
Tuples | Ad-hoc compounds that can group multiple values without explicitly defining a class. |
undefined | A literal of type Variant , equivalent to Variant() . |
unsatisfied | A contingent clause executed when a necessary contingent condition is false. |
$uppercase(...) | Meta-command that concatenates and converts one or more tokens into a literal uppercase string token. |
use | Allows structured access to arbitrary resources. |
uses | Includes the specified library file and adds its namespace to the current library. |
JSON | A class that parses a JSON string or file and returns it as a Variant. |
Variant | A datatype which can be assigned many different types of values and can be encoded as a JSON string. |
which{a:x||y} | The inline which is analogous to C's decision operator (AKA ternary operator). |
which/case/others/endWhich | Selection control structure analogous to switch . |
whichIs/case/others/endWhichIs | Similar to which but uses is instead of == to test. |
while/endWhile | Standard conditional loop. |