Types and Values
Types
Rockstar uses a similar type system to that defined by the ECMAScript type system, except undefined
doesn’t sound very rock’n’roll so we use mysterious
instead.
- Number - Numbers in Rockstar are fixed-precision , stored according to the IEEE 754 standard. (An earlier version of this spec proposed that Rockstar used the DEC64 numeric type. This is a perfect example of something that seemed like a great idea after a couple of beers but turns out to be prohibitively difficult to implement…)
- Boolean - a logical entity having two values
true
andfalse
.right
,yes
andok
are valid aliases fortrue
wrong
,no
andlies
are valid aliases forfalse
- Function - used for functions.
- Null - the null type. Evaluates as equal to zero and equal to false. The keywords
nothing
,nowhere
,nobody
, andgone
are defined as aliases fornull
- Mysterious - the value of any variable that hasn’t been assigned a value, denoted by the keyword
mysterious
.
Strings
Rockstar strings are surrounded by double quotes. A string literal includes everything up to the closing quote, including newlines. To include a double quote in a string, use a pair of double quotes. Rockstar strings are stored internally as UTF-16, and support the full Unicode character set.
The keywords empty
, silent
, and silence
are aliases for the empty string (""
)
Print "this is a string literal"
Print "This string includes ""quotes"""
Print "backslashes \don't \do \anything \special \r\n\t\w\s\0"
Print "This string
contains
line
breaks"
Print "Стріляй!
Скажи, чому боїшся ти
Зробити цей останній крок?"
Print "🎸✨🎆💔🌃🐍💘🌾🍾"
Print empty
Print silence
A backslash in Rockstar doesn’t do anything special, and Rockstar doesn’t have escape sequences like \n
or \t
. If you need to add special characters to Rockstar strings, use the rock
keyword to append characters based on their ASCII / Unicode code point:
The string is "Name"
Rock it with 9 (append a TAB character)
Rock it with "Instrument"
Rock it with 10 (append a LF)
Rock it with "Eddie", 9, "Guitar", 10
Rock it with "Alex", 9, "Drums", 10
Rock it with "Mike", 9, "Bass", 10
Print it
(prints:
Name Instrument
Eddie Guitar
Alex Drums
Mike Bass
)
Numbers
Number literals are written as ordinary digits; decimals and negative numbers are supported:
Print 1 (prints: 1)
Print 0.5 (prints: 0.5)
Print +8 (prints: 8)
Print -10 (prints: -10)
Print -.4 (prints: -0.4)
Print 1.000000000 (prints: 1)
Print 1.2. (prints: 1.2)
A Rockstar number is a 128-bit fixed-precision decimal, between -79,228,162,514,264,337,593,543,950,335 and +79,228,162,514,264,337,593,543,950,335.
You get 29 digits, a minus sign if you need it, and a a decimal point you can put anywhere you like:
Print +79228162514264337593543950335
(prints: 79228162514264337593543950335)
Print -79228162514264337593543950335
(prints: -79228162514264337593543950335)
Print +0.0000000000000000000000000001
(prints: 0.0000000000000000000000000001)
Print -.0000000000000000000000000001
(prints: -0.0000000000000000000000000001)
Print +10000000000000.000000000000001
(prints: 10000000000000.000000000000001)
Print -10000000000000.000000000000001
(prints: -10000000000000.000000000000001)
Numbers with more than 29 digits will be rounded to 29 digits if they have a decimal part:
Print +1000000000000000.00000000000001
(prints: 1000000000000000)
Print -1000000000000000.00000000000001
(prints: -1000000000000000)
Print +79228162514264337593543950335.1
(prints: 79228162514264337593543950335)
Print -79228162514264337593543950335.1
(prints: -79228162514264337593543950335)
Print +0.00000000000000000000000000001 (prints: 0)
Print -0.00000000000000000000000000001 (prints: 0)
Booleans
Rockstar supports the Boolean literals true
(aliases: yes
, ok
, right
) and false
(aliases: no
, wrong
, lies
).
Print true (prints: true)
Say OK (prints: true)
Scream yes (prints: true)
Shout right (prints: true)
Print false (prints: false)
Say no (prints: false)
Shout wrong (prints: false)
Scream lies (prints: false)
Null
Rockstar null
represents an expression which has no meaningful value. Aliases for null
are nothing
, nowhere
, nobody
and gone
:
Print null (prints: null)
Say nothing (prints: null)
Scream nowhere (prints: null)
Shout nobody (prints: null)
Say gone (prints: null)