如题,我最近突然想写一个编译器,于是,algoscript的开发被提上日程。
那必定得先明确干什么:
主要定位:轻量级,无面向对象支持(反正本来的设想就是能让人专注于算法,忽略一些在轻量级开发上无需的内容)
我们先开发几个基础内容:输入,输出,变量。
1.读入语句
这是基础中的基础,先开发这个。
我们使用一个string数组来存储语句,值得注意的是,这个数组中并不是存储一行,而是存储近似与token的东西。
大概形如这样:
#include<iostream>
#include<cstring>
using namespace std;
string s[1000010];
int cnt;
int main()
{
while(s[cnt] != "END")
{
cin>>s[++cnt];
}
}
这样就解决了输入问题。
2.输出
先来讲一下这里的编译实现:
通过一个函数run(int i)来实现编译,每次处理一个主要token(即output,input……),然后返回下一个主要token的位置,从而实现编译