Norma 1.0.0

dotnet add package Norma --version 1.0.0
NuGet\Install-Package Norma -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Norma" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Norma --version 1.0.0
#r "nuget: Norma, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Norma as a Cake Addin
#addin nuget:?package=Norma&version=1.0.0

// Install Norma as a Cake Tool
#tool nuget:?package=Norma&version=1.0.0

Norma Programming Language

**Find Article about making it HashNode**

Norma is a programming language built in C# made to be extremely simple. It's syntax is similar to Python and JavaScript, but has my own custom spin on it.

Icon

Norma is a very simple language. To define a variable, use:

var x = 10

To access the variable put it in between $

var y = $x$

To create a pointer to that variable, use the point keyword.

var z = point: $x$

To call a function, don't use parenthesis.

print "Hello World"

Strings have automatic interpolation with variables using the $ syntax.

print "X is equal to $x$ and y is equal to $y$"

To define a function, use def

def add: left, right {
    return ($left$ + $right$)
}

add 5, 6

Any equations must be inside ( ).

var x = ($y$ * $z$)

To manipulate a variable, use + instead of += where + can be any operator

var x = 10
x + 5
x - 4
x * 3
x / 2
x = 1

print $x$

Comments are very simple

// Line Comment
/*
    Block Comment
*/

Arrays are also allowed in this language

var y = [0, 1, 2]

They are typeless and can hold anything including pointers

y = [0, "yes", ["no", $z$], point: $x$]

Structs are the next main feature

struct Vector { X, Y, Z }

var vec = Vector: 100, 5.23, 99

They can be accessed and modified easily,

vec.X = 150
vec.Y = $vec.X$

The values are also typeless and can be anything

vec.X = "Hello World"
vec.Y = point: $z$
vec.Z = [1, 2, 3]

Statements are straightforward as well

if x > 55 { 
    print "X is big"
}
elif x < 0 {
    print "X is negative"
}
else { 
    print "x is small"
}

There are loops as well

while true {
    print "yes"
}
for i in 150 {
    print $i$
}

For loops can also use arrays

for value in $array$ {
    print $value$
}

There are many built in functions as well (Test file):

  • print "text"
  • input
  • clear
  • exit
  • substring "text", $start$, $len$
  • indexOf "text", "e"
  • toLower "Text"
  • toUpper "text"
  • trim " text "
  • revere "string or array"
  • length ["string", "or", "array"]
  • append [0, 1], 5
  • remove $index$
  • insert $array$, $index$, $value$
  • slice [99, 98, 97, 96, 95], $start$, $len$
  • concat $array$, [0, 1, 2, 3]
  • sort [9, 5, 7, 2, 0]
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 56 5/31/2024