Ищете интерпретатор BASIC, реализованный на PHP - PullRequest
1 голос
/ 18 января 2010

Кто-нибудь знает программу PHP, которая будет интерпретировать основной код?Я видел реализацию LOLCODE , которая выглядит так, что это хорошее место для начала, но если кто-то уже разработал что-то подобное, я был бы благодарен.

Ответы [ 2 ]

2 голосов
/ 12 апреля 2013

На самом деле это именно то, что я написал несколько месяцев назад:

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, добавил вызовы функций и некоторые другие небольшие изменения.

2 голосов
/ 18 января 2010

Не могу найти один в PHP, но есть один в Javascript: http://stevehanov.ca/blog/index.php?id=92. Если вы прокрутите эту страницу вниз, автор приложит немало усилий, чтобы объяснить, как это работает, какой IMO является хорошимместо для начала.

...