架构分析文件数据处理NodeVue.js视图展示Electron客户端C++语法分析效果展示阅读形式根据代码行读取,每读取一行遍历分析关键字和特殊符号/***关键字*/letkeyWords=['asm','auto','bool','break','case','catch','char','class','const','continue','cin','cout','default','delete','do','double','define','else','enum','except','explicit','extern','endl','false','finally','float','for','friend','goto','if','inline','int','include','long','mutable','main','namespace','new','operator','private','protectde','public','printf','register','return','short','signed','szieof','static','struct','string','switch','std','scanf','template','this','throw','true','try','typedef','typename','union','unsigned','using','virtual','void','while']/***特殊字符*/letspecialWords=[',',';','(',')','{','}','#','^','?',':','.','[',']','+','-','*','/','%','=','>','<','!','~','|','&','&&','||','==','>=','<=','!=','++','--','::','<<','>>','+=','-=','*=','/=','%=','&=','^=','->']keyWords.forEach(word=>{wordsMap.set(word,'keyWord')})specialWords.forEach(word=>{wordsMap.set(word,'specialWord')})遍历分析过程代码注释匹配当读取到一行中包含/*的两个字符时,则在注释代码中设置flag为true,然后一直读下去,遇到*/就把flag重置为false,判断是否可以组成单词。成立条件是不以数字开头,只包含数字、下划线、字母。可以使用正则模式通过匹配/[a-z]|[A-z]|_/来判断是字符串还是字符。成功的条件是判断是否为“,”开头的数字,判断是否为特殊字符,此时通过建立的映射进行关键字搜索判断空间代码解释判断工具功能//判断是字母还是下划线functionjudgeWord(word){letwordPatten=/[a-z]|[A-z]|\_/returnwordPatten.test(word)}//判断是不是数字functionjudgeNumber(number){letnumberPatten=/[0-9]/returnnumberPatten.test(number)}//判断是否为特殊字符函数judgeSpecialWord(letter){returnwordsMap.get(letter)==='specialWord'?true:false}//判断是否为关键字函数judgeKeyWord(letter){returnwordsMap.get(letter)==='keyWord'?true:false}行分析函数exports.analysisLine=(line,annotation)=>{让一个李ne=[]letword=''leti=0letincludeFile=falsewhile(i
