my_modules 自己编写的一些模块,读取文件和写入文件的函数,用于将分析的结果放在生成的文件中
source_program 需要分析的源码程序,放在这个文件夹
src 程序运行的主文件和逻辑代码
##前期工作 使用node进行文件的读取,经过词法分析后,将分析后的结果再写入到文件中 ##识别规则 识别类型分为几大类 常量,识别数字 数字由0-9,-号,小数点.构成 数字后面不允许跟随标识符 标识符,变量名,还有关键字 标识符由a-zA-Z$_开头,并且包含该字符,后面允许包含数字 标识符开头不能是数字, 运算符: 数组中定义 界定符 包含单行注释//,多行注释//,字符串包裹符,"",'' 单行注释//遇到换行,识别结束 多行注释//,每一个/只匹配最近的/ ""和''都是只匹配最近的符号 空格识别 算作是制表符,蛮识别了
a,标识符(字母开头,后面可以拼接各种字母或者数字)
letter(letter | digit)* 无穷集
b,常数(即数字,可以识别整数和浮点数,正数和负数,还有指数)
digit*
定义各种类型的判断条件和结束条件,已经错误条件和错误处理
类型判断函数:
function getType(str){
... 类型判断的条件,使用数组来进行引用
return type
}
类型定义对象
typeObj={
"digit":{
type:'digit',
validationFunctions:function(str){
const isDigit = new RegExp('[\-0-9\.]');
return isDigit.test(str);
},
endCondition:"!isDigit",//遇到非数字的就结束
errString:'isLetter',//后面不能跟字母,遇到字母就直接报错
errFunction:function(){
thnow "后面不允许跟随字母"
},
}
},
根据类型然后再调用方法
function main(){
autoGetContent(typeObj[getType(nowStr)]);
}
main();
起始,先判断条件,之后根据类型传递配置给内容自动获取函数