一个C--编译器,实现了C语言功能的子集。
还包含一个前端UI和解释执行程序。
- 从github下载最新的release,并保存到希望运行的目录
- 在本地使用:双击cmm.exe,会自动打开浏览器访问127.0.0.1:8810,如果没有则需要手动打开浏览器访问上述网址。
本语言的规则基本与C语言类似,具体支持的语法与功能如下。
这一部分说明支持的关键字,符号和标识符命名规则等支持的词法。
可以通过修改compiler/language.txt
文件来修改词法规则。
关键字表 | |||||
---|---|---|---|---|---|
数据类型 | const |
int |
char |
void |
|
分支与循环 | if |
else |
do |
while |
for |
特殊 | scanf |
printf |
return |
main |
运算符表 | ||||||
---|---|---|---|---|---|---|
算数运算符 | + |
- |
* |
/ |
||
比较运算符 | < |
<= |
> |
>= |
== |
!= |
特殊运算符 | = |
; |
, |
|||
括号运算符 | () |
[] |
{} |
|||
字符与字符串 | '' |
"" |
变量、常量、函数的标识符支持以下划线_
、大小写字母开头a-zA-Z
,随后跟随任意个下划线_
、数字0-9
或大小写字母a-zA-Z
。
数字支持含前导0的数字。
字符常量支持单引号'
引起的+-*/_a~zA~Z0~9
。
字符串常量支持双引号"
引起的十进制编码为32,33,35-126的ASCII字符。
常量与变量的定义应该在代码或者函数体的开头处。
具体定义方式与C语言相同。
if-else
、for
、while
、do-while
语句的使用方式与C语言相同。
其中条件表达式仅支持int
类型的表达式,或两个int
类型表达式做比较。
函数支持有返回值int
或char
和无返回值void
。
函数可以包含任意个数的参数。
main
函数必须定义为void main(){}
printf
输出函数支持的参数为字符串
、表达式
或字符串,表达式
字符串,表达式
会在连续输出字符串和表达式的值。
scanf
读入函数支持一个或多个逗号,
隔开的变量做为参数,从左到右从标准输入读入。
实现技术见docs/doc.md