prgm-lang
TypeScript icon, indicating that this package has built-in type declarations

2.1.0 • Public • Published

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'

Readme

Keywords

none

Package Sidebar

Install

npm i prgm-lang

Weekly Downloads

0

Version

2.1.0

License

ISC

Unpacked Size

85.1 kB

Total Files

35

Last publish

Collaborators

  • noob-killa5412