Skip to content

基于golang开发的解释型语言 使用wsp虚拟机,效率极高

License

Notifications You must be signed in to change notification settings

Linkangyis/Wsp_language

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

WSP

一门解释型语言(5.0版本正在开发)

MIT License

Wsp5.0.0进度(已经在新的分支公开开发阶段)
现阶段暂时停更 为WindowsExt寻找更完美的解决方案

  1. Lex 完成 (进度100%)
  2. Ast 完成 (进度100%)
  3. Compile 进行中(进度95%)
  4. VarModule 完成 (进度100%)
  5. WspVm 进行中(进度1%)
  6. GcModule 未开始(进度0%)
  7. 内存管理 完成 (进度100%)
  8. 其他 未开始(进度0%)

Windows ExtPlugin技术展示

请参见另外一个分支
请注意,它很不稳定

安装WSP

vi /ect/profile
export WSPPATH=WSP所在目录
ln -s WSP所在目录/wsp /usr/bin

介绍

基于golang开发的解释型语言 使用wsp虚拟机,效率极高,有PHP的简单 Python的实用 Golang的效率

开发

wsp [命令行形式]
wsp ./xxxx.wsp

语法

自定义函数

function 函数名(参数){
    //代码块
}

自定义变量

$xx=xx;

循环

xx;xx;xx形式
for(条件){
    //代码块
}
while形式
for(条件){
    //代码块
}
do_while形式
for{
    //代码块
}(条件)
死循环
for{
    //代码块
}

判断

if(条件){
    //代码块
}else if(条件){
    //代码块
}else{
    //代码块
}

Switch语句

$a = "3";
switch($a){
    case 1:
        print(1);
    case 2:
        print(2);
    case 3:
        print(3);
    default:
        print(4);
}

wgo协程

wgo func();//堆栈均共享(可选)

class类

class Test{
    function PrintClass($a){
        print($a);
    }
    function _init_($c){
         $this->Var=$c;
         print($this->Var);
    }
    function TestPrint(){
        $this->PrintClass($this->Var);
    }
    $Var = 110;
}
$TestClass = new Test(001);
$TestClassB = new Test(002);
$TestClass->Var = "测试";
$TestClassB->Var = "测试2";
$TestClass->TestPrint();
$TestClassB->TestPrint();

Class继承

class Test{
    function TestPrinta(){
        print($this->Vara);
    }
    $Var = 0;
    $Vara = 0;
}
class TestB{
    function TestPrintb(){
        print($this->Var);
    }
    $Var = 1;
}
class TestC extends Test,TestB{
    function _init_(){
        print($this->Var)
    }
    function Test(){
        print("extends");
        print($this->Var);
    }
}
$a = new TestC();
$a->Var=10086;
$a->TestPrinta();
$a->Test();

面向容器编程 (暂定)

CurEnv->this->5555->31; //公开的容器 ID 31  //端口5555
        $TestArray[0]=10086;
        $All = 0;
CurEnv->this->0->Main;  //不公开的容器 主容器  
        $Pinter = Raflect.OpenCont(31);
        $All = Raflect.ReadCont($Pinter,"All")+1;
        $TestArray = Raflect.ReadCont($Pinter,"TestArray");
        Sys.Println($All);
        Sys.Println($TestArray[0]);

扩展开发 (未来会进行修改 [待定])

可以查看 Ext/Test 测试插件作为实例

package main

import(
  "fmt"
)
func Func_Info()(map[int]string){  //系统核心
    info := make(map[int]string)  //函数列表
    info[0] = "Testb"
    info[1] = "Tests"
    return info
}
func Package_Info()(string){  //系统核心
    info := "Test"   //包名设置
    return info
}


func Testb(Value map[int]string)(string){    //Testb扩展函数 wsp调用 Test.Testb()
    fmt.Println("b")
    return "TRUE"
}

func Tests(Value map[int]string)(string){    //Tests扩展函数 wsp调用 Test.Tests()
    fmt.Println("s")
    return "TRUE"
}
//扩展编译指令
//go build -buildmode=plugin -o test.so Test.go

License

MIT

About

基于golang开发的解释型语言 使用wsp虚拟机,效率极高

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages