На самом деле это именно то, что я написал несколько месяцев назад:
http://pub.32kb.org/files/entry/pBasic/pBasic.zip
Это порт реализации одного файла BASIC в JAVA, называемый jASIC, который можно найти здесь:
http://journal.stuffwithstuff.com/2010/07/18/jasic-a-complete-interpreter-in-one-java-file
Использование выглядит следующим образом:
$pbas = new pBasic();
$basicScript = file_get_contents('test.bas');
// execute
$pbas->interpret($basicScript);
И вот пример базового сценария, который я использую для своей игровой концепции:
' list all the files on the current server, by memmaker
println "" ' used to produce a blank line in the output, the "" is needed for the parser
if "bin" = arg1 then getbinaries ' determine which directory to show
print "Listing of / on " + _ENV_CONNECTED_SERVER
allfiles = list_files() ' get list of files from the system
goto init
getbinaries:
print "Listing of /bin on " + _ENV_CONNECTED_SERVER
allfiles = list_files(1) ' get list of bin files from the system
init:
filecount = count(allfiles) ' get the length of the array
counter = 0 ' init the counter for the loop
println " - " + filecount + " files found" ' print the file count, note the "" prefix is needed because pBasic infers the type from the left argument of a binary operator
println ""
beginloop:
println get_element(allfiles, counter) ' output the current filename
counter = counter + 1 ' increment the loop counter
if counter < filecount then beginloop ' break the loop when all files are output
Как видите, я расширил исходный интерпретатор jASIC, добавил вызовы функций и некоторые другие небольшие изменения.