Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/udhos/basgo
basgo compiles BASIC-lang to Golang. Then 'go build' can translate code to native executable binary.
https://github.com/udhos/basgo
basic basic-lang basica binary compiler executable go golang gw-basic gwbasic native
Last synced: 2 months ago
JSON representation
basgo compiles BASIC-lang to Golang. Then 'go build' can translate code to native executable binary.
- Host: GitHub
- URL: https://github.com/udhos/basgo
- Owner: udhos
- License: mit
- Created: 2018-12-17T18:49:03.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-09T03:12:32.000Z (almost 2 years ago)
- Last Synced: 2024-10-28T08:41:41.268Z (3 months ago)
- Topics: basic, basic-lang, basica, binary, compiler, executable, go, golang, gw-basic, gwbasic, native
- Language: Go
- Homepage:
- Size: 820 KB
- Stars: 37
- Watchers: 7
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README-windows.md
- License: LICENSE
Awesome Lists containing this project
- awesome-basic - basgo - compiles BASIC-lang to Golang. (Dialects)
README
# Recipe for Windows
# Requirements
## Install 7-zip
You will need 7-zip to extract mingw64 files in the next step.
If you have another archiving software that can extract .7z files, you can skip this step.
Install 7-zip from https://www.7-zip.org/
## Install mingw64
- Download x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z from:
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z
- Within the package, find the folder `mingw64` and extract it as c:\mingw64
- Add c:\mingw64\bin to the environment variable PATH
- If the installation is fine, you should be able to test it with `gcc --version`
```
C:\Users\evert>gcc --version
gcc (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.C:\Users\evert>
```## Install Git Bash
If you have git in the system, skip this one.
Install Git Bash from https://gitforwindows.org/
Test it with `git version`:
```
C:\Users\evert>git version
git version 2.33.0.windows.2C:\Users\evert>
```## Install Golang
Install Golang from https://golang.org/dl/
Currently, pick this one: https://golang.org/dl/go1.17.windows-amd64.msi
Test it with `go version`
```
C:\Users\evert>go version
go version go1.17 windows/amd64C:\Users\evert>
```## Install basgo
- Download this file:
https://github.com/udhos/basgo/releases/download/v0.10.0/basgo_windows_amd64_v0.10.0.zip
- Extract these two files into a directory in your PATH:
```
basgo-build.exe
basc.exe
```Test it with `basc`, like this:
```
C:\Users\evert>basc
2021/09/01 21:28:21 basc version 0.10.0 runtime go1.17 GOMAXPROC=12
basc: missing input files
usage: basc FILE [flags]
-basgoBuild string
basgo-build command (default "basgo-build")
-baslibImport string
baslib package (default "github.com/udhos/baslib/baslib")
-baslibModule string
baslib module (default "github.com/udhos/[email protected]")
-getFlags string
go get flags
-output string
output file nameC:\Users\evert>
```# Compilation
## Create a sample program
echo 10 print "hello world!" > hello.bas
## Compile with basc
basc hello.bas
That `basc` invokation will output the compiled code into a folder named `hello`.
## Run the compiled program
.\hello\hello.exe
## Example
```
C:\Users\evert>echo 10 print "hello world!" > hello.basC:\Users\evert>basc hello.bas
2021/09/01 21:30:24 basc version 0.10.0 runtime go1.17 GOMAXPROC=12
2021/09/01 21:30:24 basc: basename: hello
2021/09/01 21:30:24 basc: cat input=hello.bas output=hello\hello.bas
2021/09/01 21:30:24 basc: basgo-build: command=basgo-build input=hello\hello.bas output=hello\hello.go baslibImport=github.com/udhos/baslib/baslib
2021/09/01 21:30:24 basgo-build version 0.10.0 runtime go1.17 GOMAXPROC=12
2021/09/01 21:30:24 basgo-build baslibImport=github.com/udhos/baslib/baslib
2021/09/01 21:30:24 basgo-build: compile: baslibImport: github.com/udhos/baslib/baslib
2021/09/01 21:30:24 basgo-build: reading BASIC code from stdin...
2021/09/01 21:30:24 basgo-build: DEBUG=[] debug=false level=0
2021/09/01 21:30:24 basgo-build: INPUTSZ=[] size=0
2021/09/01 21:30:24 basgo-build: input buffer size: 4096
2021/09/01 21:30:24 defineType: range a-z as FLOAT
2021/09/01 21:30:24 basgo-build: reading BASIC code from stdin...done
2021/09/01 21:30:24 basgo-build: FIXME WRITEME replace duplicate lines
2021/09/01 21:30:24 basgo-build: checking lines used/defined
2021/09/01 21:30:24 basgo-build: sorting lines
2021/09/01 21:30:24 basgo-build: scanning used vars
2021/09/01 21:30:24 basgo-build: issuing code
2021/09/01 21:30:24 basc: gofmt: hello\hello.go
2021/09/01 21:30:24 basc: build: dir=hello baslibModule=github.com/udhos/[email protected] output=
2021/09/01 21:30:24 basc: build: entering dir=hello
go: creating new go.mod: module hello
go: to add module requirements and sums:
go mod tidy
go get: added github.com/udhos/baslib v0.11.0
2021/09/01 21:30:28 basc: output: hello\helloC:\Users\evert>.\hello\hello.exe
2021/09/01 21:31:46 baslib: version 0.11.0 runtime go1.17 GOMAXPROC=12
2021/09/01 21:31:46 baslib: BASLIB_ALERT_OFF= showAlert=true
2021/09/01 21:31:46 baslib: env var BASLIB_ALERT_OFF is empty, set it to non-empty to disable alerts
2021/09/01 21:31:46 loading codepage 437
2021/09/01 21:31:46 loading codepage 437: found 256 symbols
2021/09/01 21:31:46 BASLIB ALERT: newInkey(): will consume os.Stdin
hello world!C:\Users\evert>
```