-
Notifications
You must be signed in to change notification settings - Fork 18
1. rajiniPP: Language Specification
This document outlines the rajini++ language specification and syntax.
| Keyword | Meaning |
|---|---|
LAKSHMI START |
Program Starts |
MAGIZHCHI |
Program Ends |
DOT |
|
AANDAVAN SOLLRAN |
Declare Variable |
ARUNACHALAM SEIYARAN |
Set initial value |
BHAJJI SAAPDU |
Assign Value |
EN PEAR MANICKAM |
If |
ENAKKU INNUR PEAR IRUKKU |
Else |
KATHAM KATHAM |
EndIf/EndLoop |
NAA <number> THADAVA SONNA <number> THADAVA SONNA MADHRI |
For Loop |
BABA COUNTING STARTS |
While Loop |
BLACK SHEEP |
break loop |
| Symbol | Meaning |
|---|---|
+ |
Sum |
- |
Difference |
/ |
Division |
* |
Multiplication |
% |
Modulo |
> |
Greater Than |
> |
Greater Than |
>= |
Greater Than Equal To |
< |
Lesser Than |
<= |
Lesser Than Equal To |
== |
Equal To |
!= |
Not Equal To |
{ |
Begin flow control block(conditional/loops) |
{ |
End flow control block(conditional/loops) |
; |
End Statement |
-
PGM_START: "LAKSHMI START" -
PGM_END: "MAGIZHCHI" -
PRINT: "DOT"
-SEMI_COLON: ;
-L_BRACE: {
-R_BRACE: }
-NUMBER: \d+(:?.\d+)?
-WORD: "[a-z_]+"
-STRING: ".*?"
-BOOL_TRUE: "True"
-BOOL_FALSE: "False"
-SUM: +
-SUB: -
-MUL: *
-DIV: /
-MOD: %
-GT: ">(?!=)"
-LT: "<(?!=)"
-GTE: ">="
-LTE: "<="
-EQ: "=="
-NEQ: "!="
-START_DECLARE: "AANDAVAN SOLLRAN"
-DECLARE: "ARUNACHALAM SEIYARAN"
-ASSIGN: "BHAJJI SAAPDU"
-DECLARE_ALT: ":="
-IF_COND: "EN PEAR MANICKAM"
-ELSE_COND: "ENAKKU INNURU PEAR IRUKKU"
-WHILE_LOOP: "BABA COUNTING STARTS"
-FOR_START: "NAA"
-FOR_RANGE_START: "THADAVA SONNA(?! MADHRI)"
-FOR_RANGE_END: "THADAVA SONNA MADHRI"
-END_BLOCK: "KATHAM KATHAM"
-BREAK_LOOP: "BLACK SHEEP"
-FUNC_DECLARE: "EN VAZHI THANI VAZHI"
-END_FUNC: "MARAKKADHINGA"
-FUNC_RETURN: "IDHU EPDI IRUKKU"
-FUNC_CALL: "CHUMMA ADHURUDHULA"
Simply put, the productions dictates the syntax of the language. More info about what productions are and how they are used in this article.
ProgramParser parses complete rajini++ programs. The following productions are used:
-
program : functions main -
main : PGM_START statements PGM_END
Productions that parse functions.
-
functions : functions function : -
function : FUNC_DECLARE func_name statements END_FUNC
Productions that parse statements.
-
statements : statements statement : -
statement : PRINT printexprs SEMI_COLON : START_DECLARE variable DECLARE expression SEMI_COLON : START_DECLARE variable DECLARE_ALT expression SEMI_COLON : variable ASSIGN expression SEMI_COLON : IF_COND logical_expression L_BRACE statements R_BRACE END_BLOCK SEMI_COLON : IF_COND logical_expression L_BRACE statements R_BRACE ELSE_COND L_BRACE statements R_BRACE END_BLOCK SEMI_COLON : FOR_START forvar FOR_RANGE_START forvar FOR_RANGE_END L_BRACE statements R_BRACE END_BLOCK SEMI_COLON : WHILE_LOOP expression L_BRACE statements R_BRACE END_BLOCK SEMI_COLON : FUNC_CALL func_name SEMI_COLON : variable FUNC_CALL func_name SEMI_COLON : FUNC_RETURN expression SEMI_COLON
Productions to parse expressions.
-
expression : expression mathop expression : expression logicalop expression : SUB expression : SUM expression : NUMBER : STRING : BOOL_TRUE : BOOL_FALSE : WORD logical_expression : expression logicalop expression
Productions dealing with operations between variables / expressions.
-
mathop : SUM : SUB : MUL : DIV : MOD -
logicalop : GT : LT : GTE : LTE : EQ : NEQ
Productions related to print statemtnt.
-
printexprs : printexprs expression :
Other productions not specific to a group
-
forvar : NUMBER : WORD func_name: WORDvariable: WORD
rajini++ • Created by Aadhithya Sankar • asankar.xyz