Update 'Tokens'
parent
69be3e7ff3
commit
a1e6cf9fa9
117
Tokens.md
Normal file
117
Tokens.md
Normal file
@ -0,0 +1,117 @@
|
||||
Arf's syntax is composed of basic elements called tokens. They can be arranged to build higher level syntactical features.
|
||||
|
||||
Important: some characters in this documented may be affected by font ligatures, and do not reflect what the language actually accepts as valid. If it is not immediately apparent what a given character is, paste it into a text field that is not ligaturized.
|
||||
# List of Tokens
|
||||
## Newline
|
||||
A simple line break.
|
||||
|
||||
## Indent
|
||||
A series of tabs characters. It's value should describe its indentation level.
|
||||
|
||||
## Separator
|
||||
A series of three dashes (`---`). It is used so separate a file's [metadata](Metadata) from its [body](Body), and in [functions](Functions-and-Methods).
|
||||
|
||||
## Permission
|
||||
A [permission value](Permissions).
|
||||
|
||||
## Return Direction
|
||||
A [return direction](Return-Direction) arrow (`->`).
|
||||
|
||||
## Int
|
||||
A negative integer number. This says nothing about the actual intended type of the value, just the representation of it found in the source code.
|
||||
|
||||
## UInt
|
||||
An positive integer number. This says nothing about the actual intended type of the value, just the representation of it found in the source code.
|
||||
|
||||
## Float
|
||||
A floating point number.
|
||||
|
||||
## String
|
||||
A string literal delimited by double quotes. It supports these escape codes:
|
||||
|
||||
- `\a`
|
||||
- `\b`
|
||||
- `\f`
|
||||
- `\n`
|
||||
- `\r`
|
||||
- `\t`
|
||||
- `\v`
|
||||
- `\'`
|
||||
- `\"`
|
||||
- `\\`
|
||||
|
||||
Hexidecimal and unicode escape codes are also permitted:
|
||||
|
||||
- `\xNN`
|
||||
- `\uNNNN`
|
||||
- `\UNNNNNNNN`
|
||||
|
||||
... where N is a single digit from 0-F.
|
||||
|
||||
String and rune literals support both `\'` and `\"`.
|
||||
|
||||
## Rune
|
||||
A unicode character literal delimited by single quotes. Only one character value is supported. All escape codes that work in strings work in rune literals.
|
||||
|
||||
## Name
|
||||
Names are composed of characters a-z, A-Z, and 0-9. However, they must start with an alphabetical character. They do not support underscores.
|
||||
|
||||
## Colon
|
||||
A colon symbol. It is used in type notation.
|
||||
|
||||
## Dot
|
||||
A dot symbol. It is used in [member selection](Identifiers) and [object initialization](Initialization).
|
||||
|
||||
## Elipsis
|
||||
Two consecutive dots. It is used in type notation to describe an array with a variable length, and will in the future be used in functions with variable input counts.
|
||||
|
||||
## Comma
|
||||
This token is not used for anything as of now.
|
||||
|
||||
## LBracket and RBracket
|
||||
Left and right square brackets (`[` and `]`). These are used to delimit [prases](Phrases).
|
||||
|
||||
## LBrace and RBrace
|
||||
Left and right curly braces (`{` and `}`). These are used for pointer dereferencing and array subscript notation, as well as in type notation to describe pointers and arrays.
|
||||
|
||||
## Plus and Minus
|
||||
Plus and minus symbols (`+` and `-`). These are used to add and subtract values.
|
||||
|
||||
## Increment and Decrement
|
||||
The plus and minus symbols respectively, but each repeated once (`++` and `--`). These are used to increment and decrement values.
|
||||
|
||||
## Asterisk and Slash
|
||||
Multiplication and division symbols (`*` and `/`). These are used to multiply and divide values.
|
||||
|
||||
## At
|
||||
An `@` symbol. This is used to define method recievers in [function/method sections](Functions-and-Methods).
|
||||
|
||||
## Exclamation
|
||||
An exclamation point. This is used as a logical not. In the future may be used to notate exception handling in functions.
|
||||
|
||||
## Percent
|
||||
A percent sign. This is used for modulo operations.
|
||||
|
||||
## Tilde
|
||||
A tilde (`~`) symbol. This is used as a binary not.
|
||||
|
||||
## Equal To
|
||||
An equals symbol (`=`). This is used to check equality, and *not* to set values. `set` phrases are used for that purpose.
|
||||
|
||||
## Not Equal To
|
||||
A not equals symbol (`!=`). This is used to check inequality.
|
||||
|
||||
## Less Than and Greater Than
|
||||
Less than and greater than symbols (`<` and `>`). These are used to compare numbers, and denote inputs and outputs in [function/method sections](Functions-and-Methods).
|
||||
|
||||
## Less Than Equal To and Greater Than Equal To
|
||||
Like the less than and greater than tokens, except each followed by an equals symbol (`<=` and `>=`). These are used to compare numbers.
|
||||
|
||||
## Left Shift and Right Shift
|
||||
The less than and greater than sumbols respectively, but each repeated once (`<<` and `>>`). These are used to perform left and right bit shift options on values.
|
||||
|
||||
## Binary Or and Logical Or
|
||||
A binary or is a single pipe symbol (`|`). A logical or is a double pipe symbol (`||`).
|
||||
|
||||
## Binary And and Logical And
|
||||
A binary and is a single amperseand symbol (`&&`). A logical or is a double amperseand symbol (`&&`).
|
Reference in New Issue
Block a user