Skip to content

Latest commit

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

glot

glot is a basic BASIC language interpreter, written in Rust.

glot supports a subset of the BASIClanguage:

  • Only the PRINT, LET, ÌF..THEN..ELSE, GOTO and END keywords 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 * 8 evaluates to 48, not 20).

Examples

Counting Loop

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

Language Grammar

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"

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages