Skip to content

GeorgeET15/machan-script

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

59 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MachanScript

MachanScript is a adipoli 😎 programming language written in Javascript.

✨ Getting Started ✨

To start using MachanScript, follow these simple steps:

  1. Installation: Install MachanScript globally using npm:

    npm i -g machan-script

    Note :- Assuming that you have Node.js installed, if not please install before continuing

  2. Syntax Overview:

    • Machane!! : Every MachanScript file should start by calling Machan, or else the code will not run.
    • ithu varName = value aanu : Used to declare variables.
    • ithu const varName = value aanu : Used to declare constant variables.
    • ithu b = "Hello World" aanu : Used to declare strings.
    • ithu arr = [ 1 , 4 , 6 , 8 , 3 ] aanu : Used to declare arrays.
    • ithu obj = { x : 100 , y : 200 , } aanu : Example of creating objects.
    • obj . x | obj . y : Accessing object properties.
  3. Examples:

    • Variable Declaration:

      ithu variableName = value aanu
      ithu const constantName = value aanu
      
    • Object Creation:

      ithu obj1 = { x : 100 , y : 200 , } aanu
      ithu const obj2 = { z : 300 , v : 400 , } aanu
      
    • Printing:

      para ( "Hello World!!" ) ;
      para ( "Sum: " ,  obj1 . x + obj2 . z ) ;
      
  4. Saving the file:

    • Save the file with .ms extension.

Native Functions

MachanScript provides the following native functions:

  • para ( message ) ; : Prints the message to the console.
  • input_eduku ( varName , prompt ) ; : Prompts the user to enter a value and assigns it to the variable specified by varName.
  • orangu ( milliseconds ) ; : It will synchronously pause the execution of other operations for the specified number of milliseconds before resuming.
  • veluthu ( arg1 , arg2...., varName ) ; : Returns the largest. We can either pass sperate values or an array or seperate values and an array. The returned value will be stored in the last passed varName.
  • cheruthu ( arg1 , arg2...., varName) ; : Same as of veluthu except it returns the smallest value
  • inathe_date ( boolVal , varName ) ; : Returns the date, if true it also returns the time, if we pass the varName the returned value will be stored in the new variable created.
  • vayiku ( file , varName ) ; : Prints the content in the file, if we pass the varName the returned content will be stored in the new variable created.
  • ezhuthu ( file , data ) ; : Stores the data we passed to the file. We can either directly pass a string or a variable containing a string,
  • random ( min , max , varName ) ; : Returns a random number between the min and max range, if we pass the varName the returned value will be stored in the new variable created.
  • fact ( number , varName ) ; : Returns the factorial of the number, if we pass the varName the returned value will be stored in the new variable created.

Control Statements

MachanScript supports the following control statements:

  • ipo : Used for conditional execution. Followed by a condition and a block of code to execute if the condition is true.
  • anengi : Marks the beginning of the block of code to execute if the condition in an ipo statement is true.
  • alengi : Marks the beginning of the block of code to execute if the condition in an ipo statement is false.
  • switch machane : Used for conditional execution. Different cases are declared by ipo value anengi and the default it set by onnum_alengi.

Loop Statements

MachanScript supports the following loop statements:

  • machane : Used to create while loops. Followed by a condition and a block of code to execute repeatedly as long as the condition is true.
  • avane and vare : Marks the beginning and end of the block of code to execute in a machane loop.
  • for machane : Used to create for loops. Followed by a condition and a block of code to execute repeatedly as long as the condition is true.
  • enit : Marks the beginning block of code to execute in a for machane loop.

Examples πŸ˜‰

Conditional Execution ( ipo, anengi, alengi )

  • Usage:
Machane!!

ithu x = 5 aanu

ipo ( x < 10 ) anengi {

  para ( " x is less than 10 " ) ;

} alengi {

  para ( "x is greater than or equal to 10" ) ;

}

Conditional Execution ( swicth machane, ipo, anengi, onnum_alengi )

  • Usage:
Machane!!

input_eduku ( x , "Enter a number: ") ;

switch machane ( x ) {

  ipo 1 anengi {

    para ( " You selected 1 " ) ;

  }
  ipo 2 anengi {

    para ( " You selected 2 " ) ;

  }
  onnum_alengi {

    para ( "MachanScript" ) ;

  }
}

While Loop ( machane, avane, vare )

  • Usage:
Machane!!

ithu a = 1 aanu

machane ( a <= 5 ) avane vare {

  para ( a ) ;
  a = a + 1

}

For Loop ( for, machane, enit )

  • Usage:
Machane!!

for machane ( ithu i = 0 aanu : i < 5 : i = i + 1 ) enit {

   para ( i ) ;

}

Machan Native Functions

input_eduku

Usage :

Machane!!

input_eduku ( w , "Enter a number, a string or an array: ") ;
para ( w ) ;
para ( w [ 2 ] ) ; //arrays

orangu

Usage :

Machane!!

ithu b = 10 aanu
ithu c = 0 aanu

machane ( c <= b ) avane vare {

    para ( c ) ;
    orangu ( 2000 ) ;
    c = c + 1
}

cheruthu , veluthu

Usage :

Machane!!

ithu arr = [ 3 , 5 , 6 , 9 , 7 , 101 ] aanu

cheruthu ( arr , small ) ;
para ( small ) ;

veluthu ( arr , 12 , 4 , 65 , 1 , 100 , 99 , large ) ;
para ( large ) ;

innathe_date

Usage :

Machane!!

inathe_date ( ) ;
inathe_date ( true ) ;
inathe_date ( true , y ) ;
inathe_date ( false , x ) ;
para ( "date: " , x ) ;

vayiku

Usage :

Machane!!

vayiku ( "./test1.txt" ) ;
ithu filePath = "./test1.txt" aanu
vayiku ( filePath ) ;

ezhuthu

Usage :

Machane!!

ezhuthu ( "./test1.txt", "Hello") ;
ithu y = "./test1.txt" aanu
ithu x = "Hello" aanu
ezhuthu ( y , x ) ;

random

Usage :

Machane!!

random ( 1 , 5 ) ;
random ( 1 , 5 , a ) ;
para ( a ) ;

fact

Usage :

Machane!!

fact ( 4 ) ;
fact ( 4 , a ) ;
para ( a ) ;

Running Code πŸš€

You can run MachanScript files from the command line using the following command:

machane filename.ms

VSCode Extension

The MachanScript extension enables syntax highlighting in VSCode.

Version History πŸ“

v3.0.0 (August-2024)

  • New and improved CLI
  • Users can program in the CLI
  • Updated error messages

v0.1 (June-2024)

  • Initial release of MachanScript.
  • Basic functionality for variable declaration, object creation, and control statements.
  • Machan Native Functions like para, input_eduku, cheruthu, veluthu, inathe_date, vayiku, ezhuthu, random, fact, orangu.
  • Support for conditional execution with ipo, anengi, alengi, switch machane, oonum-alengi.
  • Support for while Loops with machane, avane, vare.
  • Support for for loops with for, enit.

Author 😁

MachanScript was created by GeorgeET15. You can find more about the him on GitHub, LinknedIn.

License

This project is licensed under the MIT License. Please provide appropriate credit to the author when using this software. Contributions are welcome!

License: MIT

Credit

If you use MachanScript in your project, please acknowledge the author, George Emmanuel Thomas, in your documentation or credits section.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published