I expanded the BASIC script interpreter in basicscript-03.zip to include an example of how you can share variables between your program and the script. For example, you can set a counter in your program, pass that value to the script, and have the script update the value, and then use the new value in your program. Note that since the make file is for Qt, I suggest you compile with
g++ *.cpp -o basicscript.
ConsoleBasic class now shares two variables with the script, in addition to the
CLS command we added in the previous post. An integer variable
counter and a string in
name$ are now read and modified in the
sharedvariable.b sample script.
Continue reading Basic Interpreter With Shared Variables
I expanded the BASIC script interpreter in http://8bitcoder.com/downloads/basicscript-02.zip to include an example of how you can extend the interpreter and add your own commands to it. Sorry about the Makefile depending on Qt. I’ll create a generic Makefile next version I release.
I created a
ConsoleBasic object, then added the
cls command. You can see I add it in the constructor, then in
execAddonCommand I check the token that is passed in to figure out what command I should execute, which in this case can only be one command, then clear the screen via ANSI escape codes.
Next example will show how to make your C++ variables available to BASIC.
class ConsoleBasic : public SmallBasic
ConsoleBasic(const char* pszFilename)
m_cls = addCommand("cls");
bool execAddonCommand(const int tok)
if(tok == m_cls)
I had a few people interested in my BASIC interpreter that I was using as an embedded script interpreter. I had started using it in my MUD but pulled it out and made a stand alone example. It still needs a little cleanup and i still need to create an example of how to add more commands to it. See basicscript-01.zip. You can run the script with “basicscript hello.b“. hello.b uses a few commands and shows how you can use labels instead of line numbers. Line numbers are supported as well. Don’t be too hard on the code, I wrote it back in 2001!