Try

Run

Output

Language Reference

Punchscript is an interpreted scripting language based on punch dialoges of the Indian superstar Rajninikanth. It is an imperative language with infix operators inspired by ArnoldC and Python. It was developed as a fun exercise and to learn compiler design.

Here are a set of constructs in Punchscript. If you are already familiar with programming then you should be able quickly get up to speed with this.

Table 1: Punchscript Language constructs

Keyword

Equivalent in other languages

Remarks

<expr> SOLRAN <var> SEIRAN
LET <var> = <expr>

Assignment statement

MEHHH! <comment>
COMMENT <comment>

Must be at the beginning of a line

NOORU THADAVA SONNA MAADIRI <cond>
  <loop body>
MAGIZHCHI
WHILE <cond>
  <loop body>
END WHILE

If the condition evaluates to non-zero then enter loop body

MALAI DA ANNAMALAI <condition>
  <if condition true body>
EN VAZHI THANI VAZHI
  <else body>
KATHAM, KATHAM
IF <condition>
  <if condition true body>
ELSE
  <else body>
END IF

True means condition evaluates to non-zero. Else part is optional.

IDHU EPADI IRUKU <expr or string>
PRINT <expr>
PRINT “string”

Only place where literal strings are allowed

I AM CHITTI <ver number>
SPEC <ver number>

Must be first line (lang ver no.) Optional

Syntax

<var> = [A-Z a-z][A-Z a-z 0-9 _]*

<expr> = <expr> <op> <expr>

<op> = + - * / % (modulo) > < == <>

Keywords: Keywords are in capital letters and may comprise of multiple words.

Variables: All variables are of type Integers. Variable names are case sensitive alphanumeric (including underscores) and starts with alphabet (upper or lowercase).

Expressions: All expressions get evaluated to integers including logical operations. True is represented as 1 and False is 0. For example, 4 > 5 will be evaluated to 0 implying False.

Whitespace: There are no end of line markers like semicolons. So each statement must be on a seperate line. But leading spaces or indentation of a line does not matter.

Builtins

Certain variables have special meaning when evaluated

  • BILLA - Generates a different random number (between 0 and MAXINT) when evaluated
  • GURU - Maximum value of integer or MAXINT (currently 55,555)
  • SISHYAN - Minimum value of integer or MININT (currently -MAXINT)

Errors

You might get any of these cryptic replies from the language interpreter

Table 2: Punchscript error messages

Error Type

What Punchscript Says

Syntax Error

ENNAMMA KANNU, SOWKIYAMA? <char>

Parse Error

THILLU MULLU

Runtime Error

KANNA, PANNI DHAN KOOTAMA VARUM... <msg>

Divide by zero

DIVIDE BY ZERO? JUJUBE.