doc

package module
v2.8.10+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 28, 2016 License: MIT Imports: 1 Imported by: 0

README

Q Language - A script language for Go

Build Status

logo

语言特色

  • 与 Go 语言有最好的互操作性。可不进行任何包装即可直接调用 Go 语言的函数、类成员方法。
  • 有赖于 Go 语言的互操作性,这门语言直接拥有了一套非常完整且您十分熟悉的标准库,无额外学习成本。
  • 与 Go 十分相近的语法,降低您的学习成本。
  • 支持 Go 绝大部分语言特性,包括:for range, string, slice, map, chan, goroutine, defer, etc。
  • 微内核:语言的核心只有大约 1200 行代码。所有功能以可插拔的 module 方式提供。

预期的商业场景:

  • 由于与 Go 语言的无缝配合,qlang 在嵌入式脚本领域有 lua、python、javascript 所不能比拟的优越性。比如:网络游戏中取代 lua 的位置。
  • 作为编译原理的教学语言。由于 qlang 的 Compiler 代码极短,便于阅读和理解,非常方便教学实践之用。

快速入门

在您的 Go 代码中整合 qlang
import (
	"fmt"

	"qlang.io/qlang.v2/qlang"
	_ "qlang.io/qlang/builtin" // 导入 builtin 包
)

const scriptCode = `x = 1 + 2`

func main() {

	lang, err := qlang.New(qlang.InsertSemis)
	if err != nil {
		// 错误处理
		return
	}

	err = lang.SafeExec([]byte(scriptCode), "")
	if err != nil {
		// 错误处理
		return
	}

	v, _ := lang.Var("x")
	fmt.Println("x:", v) // 输出 x: 3
}

这是一个最精简功能的 mini qlang。想要了解更多,可参考“定制 qlang”相关内容。实际项目中你也可以参考代码:

非嵌入式场景下使用 qlang

尽管我们认为 qlang 的优势领域是在与 Go 配合的嵌入式场景,但您也可以把 qlang 语言用于非嵌入式脚本领域。

您可以直接通过 qlang 命令行程序来执行 *.ql 的代码。如下:

qlang xxx.ql <arg1> <arg2> ... <argN>

为了方便学习 qlang 工作机理,我们支持导出 qlang 编译的 “汇编指令”:

QLANG_DUMPCODE=1 qlang xxx.ql <arg1> <arg2> ... <argN>

在 Unix 系的操作系统下,您可以在 xxx.ql 文件开头加上:

#!/usr/bin/env qlang

并给 xxx.ql 文件加上可执行权限,即可直接运行 xxx.ql 脚本。

使用 qlang shell

命令行下输入 qlang 命令(不带参数),直接进入 qlang shell。

您同样也可以设置 QLANG_DUMPCODE 环境变量来学习 qlang 的工作机理:

QLANG_DUMPCODE=1 qlang
学习 qlang 语言特性
  • Q 语言手册: 这里有语言特性的详细介绍。
  • Qlang Tutorials: 这里是一些 qlang 的样例代码,供您学习 qlang 时参考。

下载

发行版本
最新版本
go get -u -insecure qlang.io/qlang

或者在 src 目录执行如下命令:

mkdir qiniupkg.com
git clone https://github.com/qiniu/qlang.git qlang.io
git clone https://github.com/qiniu/text.git qiniupkg.com/text

社区资源

为 Go package 导出 qlang module
  • qexport: 可为 Go 语言的标准库或者你自己写的 Go Package 自动导出相应的 qlang module。
Qlang Modules
IDE 插件

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
app
builtin
DON'T EDIT!!! THIS FILE IS GENERATED BY `qlang gentypes.ql`
DON'T EDIT!!! THIS FILE IS GENERATED BY `qlang gentypes.ql`
io
os

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL