User Tools

Site Tools


info:jimpi

JIMPI - Java IMP Interpreter

In the lecture Formal Methods and Functional Programming we were reasoning about a simple language called IMP. The JIMPI project implements a parser, interpreter and byte code emitter. The source is available from http://jimpi.origo.ethz.ch/.

Language

The language grammar:

Number: '0'..'9'+;
Symbol: 'a'..'z'|'A'..'Z' (a'..'z'|'A'..'Z'|'0'..'9')*

File: Procedure* Statement*;
Procedure: 'procedure' Symbol '(' (symbol (',' symbol)*)? ';' (symbol (',' symbol)*)? ')' 'begin' Statement* 'end';
Statement: While | Until | For | Scope | Assign | If | Skip;
While: 'while' Expression 'do' Statement* 'end';
Until: 'repeat' Statement* 'until' Expression;
For: 'for' Assign 'to' Expression 'do' Statement* 'end';
Scope: 'var' Assign 'in' Statement* 'end';
Assign: Symbol ':=' Expression;
If: 'if' Expression 'then' Statement* ('else' Statement*)? 'end';
Skip: 'skip';

Expression: '(' Expression BinOp Expression ')' | Number | Symbol | Symbol '(' (Expression (',' Expression)*)? ';' (symbol (',' symbol)*)? ')'
BinOp: '+' | '-' | '*' | '=' | '#' | '>' | '>' | '>=' | '<=' | 'and' | 'or';

License

Jimpi is published under the tems of EPL 1.0.

info/jimpi.txt · Last modified: 2010/05/16 18:15 by moritz