Note : Repository moved to this URL https://github.com/agaram-programming-language/agaram-interpreter
ஒரு தமிழ் நிரலாக்க மொழி
எழுது '123';
எழுது 1 + 2; // கூட்டல்
எழுது 1 - 2; // கழித்தல்
எழுது 1 * 2; // பெருக்கல்
எழுது 4/2; // வகுத்தல்
எழுது (1 * 2) + (4 / 2); //சிக்கலான எண்கணித செயல்பாடு
மாறி எ = 10;
மாறி எ = 10; ஒருவேளை ( எ == 10) { எழுது எ; }
மாறி எ = 10;
இருப்பின்(எ > 0) { எழுது எ; எ = எ - 1; }
ஆக ( மாறி எ = 1; எ < 5; எ = எ + 1) { எழுது எ; }
செயல்பாடு கூட்டு( அ, ஆ ) { எழுது அ + ஆ; }
கூட்டு(1,2);
செயல்பாடு கூட்டு( அ, ஆ ) { திருப்பு அ + ஆ; }
program → declaration* EOF ;
declaration → varDecl | funDecl | statement ;
funDecl → "செயல்பாடு" function ; function → IDENTIFIER "(" parameters? ")" block ; parameters → IDENTIFIER ( "," IDENTIFIER )* ;
parameters → IDENTIFIER ( "," IDENTIFIER )* ;
varDecl → "மாறி" IDENTIFIER ( "=" expression )? ";" ;
statement → exprStmt | printStmt | ifStmt | whileStmt | forStmt | returnStmt | block ;
ifStmt → "ஒருவேளை" "(" expression ")" statement ( "இல்லையென்றால்" statement )? ;
returnStmt -> "திருப்பு" expression ";"
whileStmt -> "இருப்பின்" "(" expression ")" statement
forStmt → "ஆக" "(" ( varDecl | exprStmt | ";" ) expression? ";" expression? ")" statement ;
block → "{" declaration* "}" ;
exprStmt → expression ";" ; printStmt → "எழுது" expression ";" ;
expression -> assignment;
assignment → IDENTIFIER "=" assignment | logic_or ; ;
logic_or → logic_and ( "or" logic_and )* ; logic_and → equality ( "and" equality )* ;
line -> expression
group -> "(" expression ")"
expression -> binary | unary | literal | group
comparsion -> expression (">=" | "<=" | ">" | "<") expression
operator -> "+" | "-" | "*" | "/"
binary -> expression operator expression
unary -> operator expression | call
call → primary ( "(" arguments? ")" )* ;
arguments → expression ( "," expression )* ;
primary -> NUMBER | STRING | "உண்மை" | "பொய்" | IDENTIFIER;
grouping -> "(" expression ")" ;