38 lines
976 B
Plaintext
38 lines
976 B
Plaintext
|
# Elna programming language
|
||
|
|
||
|
Elna compiles simple mathematical operations to machine code.
|
||
|
The compiled program returns the result of the operation.
|
||
|
|
||
|
## File extension
|
||
|
|
||
|
.elna
|
||
|
|
||
|
## Grammar PL/0
|
||
|
|
||
|
program = block "." ;
|
||
|
|
||
|
block = [ "const" ident "=" number {"," ident "=" number} ";"]
|
||
|
[ "var" ident {"," ident} ";"]
|
||
|
{ "procedure" ident ";" block ";" } statement ;
|
||
|
|
||
|
statement = [ ident ":=" expression | "call" ident
|
||
|
| "?" ident | "!" expression
|
||
|
| "begin" statement {";" statement } "end"
|
||
|
| "if" condition "then" statement
|
||
|
| "while" condition "do" statement ];
|
||
|
|
||
|
condition = "odd" expression |
|
||
|
expression ("="|"#"|"<"|"<="|">"|">=") expression ;
|
||
|
|
||
|
expression = [ "+"|"-"] term { ("+"|"-") term};
|
||
|
|
||
|
term = factor {("*"|"/") factor};
|
||
|
|
||
|
factor = ident | number | "(" expression ")";
|
||
|
|
||
|
## Operations
|
||
|
|
||
|
"!" - Write a line.
|
||
|
"?" - Read user input.
|
||
|
"odd" - The only function, returns whether a number is odd.
|