# 基于 Golang 编写的解释型语言 (迭代中)
This is an interpreter which created by Golang. You can also see it as a novel computer language, but i'm now still working on it to produce a bit more features ...
Lit 是一个基于纯 Golang 开发的解释型编程语言,目前仍在持续开发中。
最终我想把它实现为一个解释型的弱类型编程语言,用于日常的 Web 开发。
关于目前已实现的特性,请看如下文档示例,我将会定期更新。
当前文档更新日期是: 2022.12.08
---
### 已支持的特性
**一、变量**
**二、数组**
**三、算术表达式**
**四、弱类型**
**五、关系运算**
**六、逻辑运算**
**七、内置函数**
**八、自定义函数**
**九、流程控制 if**
**十、流程控制 for (实验阶段)**
---
### 使用方法 非常简单
##### 第一步:下载 lit 项目包
```
go get github.com/pywee/lit
```
---
##### 第二步:在当前目录新建 main.go 文件,内容如下
```golang
import (
"fmt"
"os"
"github.com/pywee/lit"
)
func main() {
exprs, err := os.ReadFile("./src.lit")
if err != nil {
panic(err)
}
if _, err = goExpr.NewExpr(exprs); err != nil {
fmt.Println(err)
return
}
}
```
---
##### 第三步:在当前目录新建 src.lit 文件
```go
// src.lit 文件内容
// 例1
// 变量声明、进行算术运算、执行内置函数
a = 5
b = a + 6
c = a + b * (1 + 2 * (3 + 4) - 5 / b)
println(a + b + c) // 输出 186
// 浮点型处理
a = 11
a /= 2
func demo(arg) {
return arg+1
}
println(demo(a+1)) // 输出 7.5
// 例2
// 较为复杂的算术运算,优先级的处理逻辑与 golang 保持一致
// * 以下代码如果是在 PHP 中执行会输出 -24,两种语言针对优先级的处理略微不一样,其他语言也是如此
a = (2 + 100 ^ 2 - (10*1.1 - 22 + (22 | 11))) / 10 * 2
b = 12 / 333 + 31 + (5 / 10) - 6 | 100
println(a) // 输出 16
println(b) // 输出 125
// 例3
// 自定义函数以及弱类型处理
func demo(arg) {
arg++
return arg-false*3/10+(20-1)
}
println(demo(10)+70) // 100
// 例4
// 下面的句子调用了两个函数
// isInt(arg) 用来检查 arg 是否为整型
// replace(arg1, arg2, arg3, arg4) 用来做字符串替换
a = replace("Hello Word111!", "1", "", 2-isInt((1+(1 + isInt(123+(1+2)))-1)+2)-2)
println(a) // 输出 Hello word!
// 例5
// 更多关于弱类型的处理,基本上参考了 PHP
a = true - 1
b = isInt(1)
c = isFloat(1.0)
d = false == 0.0
e = "false" == 0.0
println(a) // 0
println(b) // true
println(c) // true
println(d) // true
println(e) // true
a = false
b = true
c = "123"
d = 456
println(a + b) // 1
println(a >= b) // false
println(a + b + c + d) // 580
// 例6
// 流程控制语句 if 多if嵌套示例
a = 100;
func functionDemo() {
return 1;
}
if a == 101 - functionDemo() {
if 1+1 == 2 && 3-1 == 20 {
println("yes")
} else {
if 1+a == 102{
println("no")
} else {
if false {
println(0)
} else {
println("Hello world!")
}
}
}
}
// 例7
// 流程控制语句 for
a = 5;
if a == 6-demo() {
for i = 0; i < demo()+a; i ++ {
println(a+i); // 输出 5 6 7 8 9 10
}
}
func demo() {
return 1;
}
// 例8-01
// 声明数组 a
// 直接通过 println 输出 a 及其下标 a[0]
a = [1]
println(a, a[0]) // 输出 Array 1
// 例8-02
// 声明并访问多维数组
arr = [[[123]]]
println(arr[0][0][0]) // 输出 123
// 例8-03
// 多维数组的声明及参与运算的效果
b = [9, [123]]
b[1][0] = 1
func demo(arr) {
return arr[1]
}
println(demo(b)[0]+1) // 输出 2
// 例8-04
a = [1, 2, 3]
func demo(arg) {
for i = 0; i < 3; i ++ {
if arg[i] > 1 {
break
}
println(arg[i])
}
}
demo(a) // 输出 1
```
```golang
// 最后即可在当前目录执行 go run . 输出结果
// go run .
// * for 功能仍在迭代中,仅实现了一种 针对 (i = 0; i < n; i++)
// * 我在完成对数组的支持后会继续迭代 for 功能,实现 range 操作
```
---
**请注意,Lit 的算术符号优先级向 Golang 看齐。每个语言对算术符号的优先级处理都有一定区别,如,针对以下表达式进行计算时:**
``` golang
// 2 + 100 ^ 2 - (10*1.1 - 22 + (22 | 11)) / 10 * 2
// PHP 输出 -104
// Node.js 输出 -104
// Golang 输出 96
// Lit 输出 96
```
---
**Lit 算术符号优先级**
第一级 ``` () && || ```
第二级 ``` > < >= <= == != ===```
第三级 ``` * / % ```
第四级 ```| &```
第五级 ``` + - ^ ```
---
**当前支持的内置函数有如下,更多函数将会在逐步补充 (当前仍然存在bug)**
通用处理函数
```golang
print
varDump
```
---
字符串处理函数
函数的命名基本参考了 Go 语言
除了个别函数有差别,如
utf8Len 用于检测字符串字数的函数
isNumeric 用于判断当前输入是否为数字
```
trim
trimLeft
trimRight
trimSpace
len
utf8Len
md5
replace
contains
index
lastIndex
toLower
toUpper
toTitle
repeat
```
---
其他函数
```
isNumeric
isBool
isInt
isFloat
```
---
#### 计划后期支持的特性
##### 数组、对象或结构体 (从中选择其一实现)、递归、基础的动态库 (如 tcp/http/mysql等)、异常处理
由于它将是一个解释型语言,出于效率考虑,我不会让它支持任何的语法糖,不支持多余的、锦上添花的特性,避免在运行时过多影响效率。
得益于 Golang 原生支持的一些高级特性,例如 管道、协程 这些可轻松实现异步操作,Lit 会有更多扩展空间,它会比 php 更灵活、更小巧。
没有合适的资源?快使用搜索试试~ 我知道了~
go Lit 是一个基于 Golang 开发的解释型编程语言,现已支持变量、函数、算术表达式、流程控制等特性,目前仍在持续开发中
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共25个文件
go:20个
md:2个
lit:2个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
需积分: 5 0 下载量 156 浏览量
2024-05-23
17:09:53
上传
评论
收藏 34KB ZIP 举报
温馨提示
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
资源推荐
资源详情
资源评论
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 25 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/d7864c98224046ec9a7f43fa6207c84e_qq_51320133.jpg!1)
生瓜蛋子
- 粉丝: 3829
- 资源: 5775
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)