2.1.0 • Published 2 months ago

prgm-lang v2.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 months ago

PRGM-lang

This is a programming language that I made.

Example

class Point {
  x = 0;
  y = 0;

  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  operator +=(other) {
    this.x += other.x;
    this.y += other.y;
    this;
  }

  toString() {
    "(" + this.x + ", " + this.y + ")";
  }
}

point = Point(10, 5);

println(point.toString());

canMove = true;

function move() {
  point.x += 1;
}

if (canMove) then point.x += 10;
else point.x -= 0;

if (!canMove) {
  println("Error");
} else move();

Syntax

Operators

All operators require spaces in between them.

!cond # not cond
cond = true
i += 1
i -= 1
i /= 2
i *= 2
i %= 2
cond || otherCond # BUG: Both sides evaluate no matter what
cond && otherCond # BUG: Both sides evaluate no matter what
i < 1
i > 1
i <= 1
i >= 1
cond == true
cond != true
i + 1
i - 1
i * 2
i / 2
i % 2
obj.prop

Call functions

fnName(arg1, arg2, arg3);

Block

{
  # lines of code separated by ";"
}

If

if (cond) {
  true;
} else {
  false;
}

if (cond) then true; else false;

Do-While

do {
  # lines of code separated by ";"
} while (cond);

Async while

_while (cond) {
  # code
}

While

while (cond) {
  # code
}

Function

The last expression evaluated is the return value of the function.

function fnName(arg1, arg2, arg3) {
  # function body
}

Object

object {
  prop1: "Foo",
  prop2: "Bar",
  "Prop with spaces": 2
}

Class

class ClassName extends OtherClass {
  x = 2;
  y = 6;

  constructor(arg1, arg2) {
    # body
  }

  method1(arg) {
    # body
  }

  prop1 = "Foo";
}

Import

import "path";

Other types

# Null:
null
# Bool
true
false
# Num
1
2
3.5
# String
"Foo"
# Char
'a'
'b'
2.1.0

2 months ago

2.0.0

2 months ago

1.5.0

2 months ago

1.4.6

2 months ago

1.4.5

2 months ago

1.4.4

2 months ago

1.4.3

2 months ago

1.4.2

2 months ago

1.4.7

2 months ago

1.4.1

2 months ago

1.4.0

2 months ago

1.2.0

3 months ago

1.3.0

3 months ago

1.1.11

7 months ago

1.1.10

7 months ago

1.1.9

9 months ago

1.1.8

9 months ago

1.1.7

9 months ago

1.1.6

9 months ago

1.1.5

9 months ago

1.1.4

9 months ago

1.1.3

9 months ago

1.1.2

9 months ago

1.1.1

9 months ago

1.1.0

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago