话说,duangsuse 现在还没有写过编译性的语言实现呢,这次来一个编译到 8085 汇编的编译器吧
来源语言是一门简单的四则运算语言,因为 duangsuse 对不熟悉的原因
只能计算 32 位有符号整数,由于 duangsuse 不熟悉啥 Combinator、啥 LL、左递归右递归的就不做扩号语法了(算了,貌似最简单的... 递归下降法应该能用吧
编译器使用 C++ 编写
目标语言是 GNUSim86 支持的 8085 汇编
并且在完成算式后自动将结果格式化输出到标准输出,真希望能使用 Libc,要不然还得自己不断和 10 除法取余转换字符串...
来源语言是一门简单的四则运算语言,因为 duangsuse 对不熟悉的原因
+ - * /只能计算 32 位有符号整数,由于 duangsuse 不熟悉啥 Combinator、啥 LL、左递归右递归的就不做扩号语法了(算了,貌似最简单的... 递归下降法应该能用吧
编译器使用 C++ 编写
目标语言是 GNUSim86 支持的 8085 汇编
并且在完成算式后自动将结果格式化输出到标准输出,真希望能使用 Libc,要不然还得自己不断和 10 除法取余转换字符串...
int c;我的锅,把指针递出去了,看看
while ((c = getchar()) != EOF) {
code.append((const char *) &c);
}
<< 操作符能不能用...接下来要写解析器逻辑,因为表达式都是毕竟简单的格式
因为我对 C++ 和结合实在是可以说几乎一无所知,所以暂时不做运算符优先级了,以后慢慢思考
表达式都是这样的
编译出来是这个样子(1 + 1 为例)
因为我对 C++ 和结合实在是可以说几乎一无所知,所以暂时不做运算符优先级了,以后慢慢思考
表达式都是这样的
1 + 1 * 2 / 32 * 233编译出来是这个样子(1 + 1 为例)