glot is a basic BASIC language interpreter, written in Rust.
glot supports a subset of the BASIClanguage:
- Only the
PRINT,LET,ÌF..THEN..ELSE,GOTOandENDkeywords are supported. - Variables are identified with a single character (
LET A = 42). - Literals are either integers (
4278) or double-quoted strings ("A string"). - Expressions are evaluated from left to right (
4 + 2 * 8evaluates to 48, not 20).
10 LET C = 4 + 2
20 PRINT C
30 LET I = 1
40 PRINT "Counting:"
50 PRINT I
60 LET I = I + 1
70 IF I < C THEN GOTO 130
80 PRINT "Done!"
90 END
program::= { statement }
statement::=print_statement|assignment_statement|if_statement|goto_statement|end_statementprint_statement::="PRINT"expressionassignment_statement::="LET"identifier"="expressionif_statement::="IF"condition"THEN"statement [ "ELSE"statement ]
goto_statement::="GOTO"integer_literalend_statement::="END"condition::=expressioncomparison_operatorexpressioncomparison_operator::="="|"!="|"<"|">"|"<="|">="expression::=term { ( "+"|"-"|"*"|"/" ) term }
term::=identifier|literalliteral::=integer_literal|string_literalinteger_literal::=digit { digit }
string_literal::="\""character { character } "\""identifier::=letterdigit::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"letter::="A"|"B"| ... |"Z"|"a"|"b"| ... |"z"