AllBASIC

BASIC Developer & Support Resources => Translators => C BASIC => Topic started by: John on December 01, 2013, 10:40:56 PM

Title: C BASIC Interpreter
Post by: John on December 01, 2013, 10:40:56 PM
This is the first in a series of examples as I build a ScriptBasic IDE with C BASIC. I plan to use IUP for the cross platform IDE and run interactively like a Chipmunk Basic interpreter. This project has two goals. A modern IDE for SB and showing folks how to embed SB into their projects. The following example can run all the scripts that scriba (ScriptBasic console interpreter) can run.

-rwxrwxr-x 1 jrs jrs 6304 Dec  1 23:11 sb1 

Yes, that is a 6304 byte 64 bit traditional BASIC interpreter .

FYI - I'm going to be changing RETURN to RETURN_FUNCTION due to a conflict with SB already using it.

Code: [Select]
// C BASIC - ScriptBasic IDE
// gcc embed-b1.c -I/home/jrs/sb/source -lscriba -lpthread -o sb1

#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include "scriba.h"
#include "cbasic.h"

MAIN
BEGIN_FUNCTION
  DIM AS pSbProgram pProgram;
  pProgram = scriba_new(malloc,free);
  scriba_SetFileName(pProgram, argv[1]);
  scriba_LoadSourceProgram(pProgram);
  scriba_Run(pProgram, argv[2]);
  scriba_destroy(pProgram);
  RETURN_FUNCTION(0);
END_FUNCTION

jrs@laptop:~/C_BASIC/SB-IDE$ gcc embed-b1.c -I/home/jrs/sb/source -lscriba -lpthread -o sb1
jrs@laptop:~/C_BASIC/SB-IDE$ time ./sb1 test.sb JRS
ARG = JRS
1
2
3
4
5

real   0m0.005s
user   0m0.000s
sys   0m0.000s
jrs@laptop:~/C_BASIC/SB-IDE$

test.sb
Code: [Select]
cmd = COMMAND()

PRINT "ARG = ",cmd,"\n"

FOR x = 1 TO 5
PRINT x,"\n"
NEXT