GPJ语言参考手册

VIP免费
2025-01-13 4 0 364.92KB 35 页 5.9玖币
侵权投诉
ADSL 课 程 设 计 1
GPJ 语言参考手
ZY2306138 孙浚峰 ZY2306139 管延彧
2023 12
ADSL 课 程 设 计 2
1总体设计
1.1 语言设计背景
在计算机科学的历史长河中,编程语言的发展一直是重要的主题。从早期的汇编
言和 Fortran到现代的 Python JavaScript每一种编程语言的出现,都是为了解决特
定的问题,满足特定的需求。在这个过程中,Go 语言以其简洁的语法、强大的并发模
型和出色的性能,赢得了开发者们的青睐。
Go 语言(又称 Golang)是一种由 Google 开发的静态类型、编译型、并发型编程语
言。它具有语法简洁、并发支持、内存管理、跨平台特性以及性能优越等特点,在后端
开发、分布式系统、容器技术、云原生应用和网络编程等领域都有广泛的应用。Go
言以其简洁性、高性能和并发支持使得它成为许多开发者和公司的首选语言,特别适合
构建高性能、高并发的应用程序。在后端开发领域,Go 语言因其高性能和并发模型而
备受青睐。GoogleUber Dropbox 等,都使用 Go 语言来构建其后端服务。Go 在构
建分布式系统时具有独特优势,Go 能够轻松地处理大规模并发,并提供丰富的库来简
化分布式系统的开发和管理。此外,Go 语言在容器技术领域也有广泛的应用。目前最
流行的容器化平台 Docker 是使用 Go 语言编写的,Go 的性能和跨平台特性使得它成为
构建轻量级、高性能容器的理想语言。
尽管 Go 语言在许多方面表现出色,但它也有其缺点和局限性,在编程人员使用过
程中可能会引起不必要的误解和学习成本。
Go 的异常处理主张如果函数可能出现异常,那么应该把异常作为返回值,没有异常
就返回 nil;此外每次调用可能出现异常的函数时,都应编写对应的卫述语句主动进行
检查并做出反应。在实际使用中,这种思想可能带来过于冗长的异常处理和错误处理代
码,为代码文件的编写和阅读带来了不必要的负担。
Go 语言出于性能考虑,再次切片一个 Slice 不会复制底层的数组,这意味着子切片
仅仅是原始切片的视图。子切片容量与原始数组相关,当容量不足时,在使用 append
函数时有可能导致指向不明,从而引发难以发现的不确定 Bugs
Go 语言提供 var := 两种方法来进行变量声明,在实际使用过程中,后者很容易
ADSL 课 程 设 计 3
和赋值过程混淆,且声明过于多样会导致编写得到的代码不易阅读。
Go 语言的 nil 接口值同样会令人困惑。Go 中,一个被赋值 nil 的接口值被认为是
非空值。这意味着,我们在检查接口值是否为空时除了常规判断,必须使用反射。这一
特性有可能导致难以觉察的错误,并且会使代码变得冗长。
针对上述问题,我们对 Go 进行了修改和调整,得到了一门新的编程语言。该语言
Go 为基础,Python 语言的切片机Java 语言的异常处理机制,我们将这
语言命名为 GPJ
1.2 语言特性
GPJ 语言的特性如下。
1 增加了 try…catch 语句。我们从 Java 语言中获得了灵感,为 Go 语言的异常处
机制增加了 try-catch 块。try-catch 代码块提供了一种结构化的异常处理方式,
够实现异常处理代码与正常逻辑的分离,使代码更加模块化和易于维护。
2 优化了 Slice 机制。我们借鉴了 Python 语言,Go 的切片机制进行了修改。GPJ
的切片和 Python 类似,会得到一个浅拷贝的新数组,而非类似 Go 的切片视图,
这避免了 append 可能导致的错误,同时省去了 make 分配空间也使 Slice 的使用
更加灵活简洁。
3) 优化了变量的声明机制。针对使用:=的变量声明赋值可能导致的程序阅读困难,
我们删除了:=的声明赋值方式,使代码更加简单易懂。此外,我们强制要求在变
量声明时必须赋予初始值,目的是避免空值可能导致的 Bug
4) 增加了枚举类型。Go 缺少枚举类型,尽管使用 iota 可以快速生成自动递增的值,
但这更像是语言的使用技巧而非特性。GPJ 语言内置枚举类型,提高了代码的可
读性、表达性和可维护性。
5) 增加了三目表达式。GPJ 语言新增了三目表达式。三目表达式使得在一行代码中
完成条件判断和赋值成为可能,代码更加简洁、易读。
6 Go 中的部分语法进行简化,使语言易于理解,能够快速上手。
7) 实现了基础的泛型机制。GPJ 语言支持泛型函数,提供一种灵活的方式来编写通
用代码,可以工作在不同数据上,提高了代码的重用性、可维护性和可读性。
ADSL 课 程 设 计 4
2语法设计
2.1 标识符
GPJ 中,标识符的命名遵循如下规则:1首字符可以是任意的 Unicode 字符或
者下划线;2)剩余字符可以是 Unicode 字符、下划线、数字;3)字符长度不限。因
此标识符的正则表达式如下。
IDENTIFER: [a-zA-Z_] [a-zA-Z0-9_]*;
2.2 关键词和保留字
GPJ 语言共设置 19 个关键词和保留字。
关键词
作用
catch
异常捕获关键词
const
常量声明关键词
else
流程控制语句关键词
for
流程控制语句关键词
func
函数定义关键词
if
流程控制语句关键词
return
返回值关键词
struct
结构体声明关键词
try
异常捕获关键词
type
类型声明关键词
var
变量声明关键词
true
布尔值
false
布尔值
int
整型
float
浮点型
ADSL 课 程 设 计 5
bool
布尔型
string
字符串类型
Integer
整数类
Float
浮点数类
Bool
布尔类
T
泛型
2.3 词法设计
GPJ 语言的词法设计如下。将运算符、关键词和保留字、标识符等元素识别为词法
TOKEN,用“;”标志语句结束。此外,词法设计中过滤了空白符和换行符。
SEMICN:';';
COMMA :',';
GENERAL :'<T>';
ASSIGN:'=';
ADD:'+';
SUB:'-';
MUL:'*';
DIV:'/';
AND:'&&';
NOT:'!';
OR:'||';
LSS:'<';
LEQ:'<=';
GRE:'>';
GEQ:'>=';
EQL:'==';
NEQ:'!=';
LPARENT:'(';
ADSL 课 程 设 计 6
RPARENT:')';
LBRACK:'[';
RBRACK:']';
LBRACE:'{';
RBRACE:'}';
THR_1:'?';
THR_2:':';
BOOL:'bool';
BOOL_CLASS:'Bool';
INT:'int';
INTEGER:'Integer';
FLOAT:'float';
FLOAT_CLASS:'Float';
STRING:'string';
STRUCT:'struct';
Interface:'interface';
ENUM:'enum';
CONST:'const';
FUNC:'func';
MAIN:'main';
TYPE:'type';
VAR:'var';
RETURN:'return';
IF:'if';
ELSE:'else';
FOR:'for';
IN:'in';
TRY:'try';
ADSL 课 程 设 计 7
CATCH:'catch';
IDENTIFER: [a-zA-Z_] [a-zA-Z0-9_]*;
WS :(''|'\t')+ -> skip;
EL :'\n' -> skip;
EL_2:'\r' -> skip;
INTLITERAL: [0-9]+;
FLOATLITERAL: [0-9]+ '.' [0-9]+;
STRINGLITERAL:'"' ('\\' [\\"] | ~[\\"\r\n] )* '"';
2.4 文法设计
2.4.1 类型和字面量
GPJ 语言的类型包括基础类型(整型,浮点型,字符串类型,布尔类型),结构体类
型,数组类型以及枚举类型。
type::= baseType | structType | arrayType | enumType
| identifier;
baseType::= 'bool' | 'int' | 'Integer' | 'float' |
'string' | 'Float' | 'Bool';
arrayType::= arrayDim type;
arrayDim::= '[' [expr] ']' {'[' [expr] ']'};
enumType::= 'enum' identifier;
structType::= 'struct' identifier;
GPJ 语言的字面量包括整型字面量,浮点型字面量,字符串字面量和布尔值字面量。
literal::= intLiteral |floatLiteral |stringLiteral
|booleanLiteral;
intLiteral::= INTLITERAL;
floatLiteral::= FLOATLITERAL;
stringLiteral::= STRINGLITERAL;
booleanLiteral::= 'false' |'true';
摘要:

ADSL课程设计第1页GPJ语言参考手册ZY2306138孙浚峰ZY2306139管延彧2023年12月ADSL课程设计第2页1总体设计1.1语言设计背景在计算机科学的历史长河中,编程语言的发展一直是重要的主题。从早期的汇编语言和Fortran,到现代的Python和JavaScript,每一种编程语言的出现,都是为了解决特定的问题,满足特定的需求。在这个过程中,Go语言以其简洁的语法、强大的并发模型和出色的性能,赢得了开发者们的青睐。Go语言(又称Golang)是一种由Google开发的静态类型、编译型、并发型编程语言。它具有语法简洁、并发支持、内存管理、跨平台特性以及性能优越等特点,在后端...

展开>> 收起<<
GPJ语言参考手册.pdf

共35页,预览7页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:35 页 大小:364.92KB 格式:PDF 时间:2025-01-13

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 35
客服
关注