npm.io
2.1.0 • Published 2 years agoCLI

prgm-lang

Licence
ISC
Version
2.1.0
Deps
1
Size
83 kB
Vulns
0
Weekly
0

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'