You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.4 KiB
Markdown
86 lines
2.4 KiB
Markdown
# Documentation
|
|
|
|
Documentation for FlowJS.
|
|
|
|
## Types
|
|
|
|
FlowJS mostly uses TypeScript-style types, except for `int` and `float` for
|
|
feature parity with Flowgorithm. Note that these names are slightly different
|
|
from Flowgorithm's, `int` translates to `Integer`, `float` translates to `Real`,
|
|
and the rest have similar capitalization.
|
|
|
|
## Builtins
|
|
|
|
### `print(x: any)`
|
|
|
|
Translates to an `Output` statement.
|
|
|
|
### `input(var: <Identifier: any>)`
|
|
|
|
Translates to an `Input` statement. `var` must be a variable identifier.
|
|
|
|
### `attr(key: string, value: string)`
|
|
|
|
Applies a value to a specific program attribute. Available attributes:
|
|
|
|
- **name** - the program's name
|
|
- **authors** - the program's authors
|
|
- **about** - description of the program
|
|
- **saved** - a date string in the form of `yyyy-MM-dd HH:mm:ss a` e.g.
|
|
`2022-10-23 11:10:23 AM` (keep in mind the 12-hour time format)
|
|
|
|
**edited** and **created** are also available but are always overwritten upon
|
|
transpilation.
|
|
|
|
### `meta(key: string, value: string)`
|
|
|
|
Applies a value to a specific meta property of a program. Available keys:
|
|
|
|
- **username** - your logged in user
|
|
- **hostname** - your computer's hostname
|
|
- **editVersion** - the program's edit version (starts from 1)
|
|
- **editMysteryNumber** - idk what this even is but it starts at like 2300 iirc
|
|
|
|
### `comment(comment: string)`
|
|
|
|
Creates a comment with the given string.
|
|
|
|
### `insist(var: <Identifier: any>)`
|
|
|
|
**(temporary)** · A lazy temporary soution to make the typechecker believe
|
|
that an identifier has been **defined** without affecting the output code.
|
|
|
|
## Statements
|
|
|
|
### `for`
|
|
|
|
For statement syntax is slightly different from JS/TS syntax in order to have
|
|
compatibility with Flowgorithm's.
|
|
|
|
`for (init; <end>; upd) <BlockStatement>`
|
|
|
|
- `init` can either be `<var> = <start>` with an optional `let`. `<var>` should
|
|
always be an `<Identifier: float | int>` and `<start>` should always be a
|
|
`<NumericLiteral>`.
|
|
- `<end>` is the number to end the loop at. It should always be a
|
|
`<NumericLiteral>`.
|
|
- `upd` can either be (where `<var>` matches that of `init`):
|
|
- `<var>++/--` - This assumes step is 1 and direction is either "inc" (`++`)
|
|
or "dec" (`--`).
|
|
- `<var> +=/-= <step>` - Here you can define the step number, and direction
|
|
is either "inc" (`+=`) or "dec" (`-=`).
|
|
|
|
#### Examples:
|
|
|
|
```ts
|
|
for (let i = 0; 10; i++) {
|
|
print("Going up! " + i);
|
|
}
|
|
```
|
|
|
|
```ts
|
|
// `i` was declared earlier
|
|
for (i = 20; 10; i -= 2) {
|
|
print("Going down! " + i )
|
|
}
|
|
``` |