一个用jQuery实现的词法分析器(1)

313 阅读1分钟

1.原生的JavaScript不太适合文档流的操作,因此我们用jQuery写一个词法分析器

$(document).ready(function () {

$("#put").click(function(){

//获取文本数据和响应事件

2. 总体删除文本数据中空格换行及注释中的内容

 var
text=$('#in').val();console.log(text) 

      
// 文档流获取

   
text= text.replace(/(?:^|\n|\r)\s*\/\*[\s\S]*?\*\/\s*(?:\r|\n|$)/g,
'\n').replace(/(?:^|\n|\r)\s*\/\/.*(?:\r|\n|$)/g, '\n'); 

       
//删除注释(这个正则表达式太骚了!!!)

//脚本之家的上截的

   
text = text.replace(/\ +/g,""); 

     
// 去除字符串内所有的空格:

   
text = text.replace(/[\r\n]/g,"");

       
//去除换行

    
text = text.replace(/\s*/g,'');

       
//分割出单个字母

   
var text = text.split('');

     


   
text=text.toString().replace(/,/g,"");//去除输出时的逗号

       
$('#scanf').text(text)

4.对不同的种别进行匹配

 var reg1 = RegExp(/include/);
      var reg2 = RegExp(/int/);
      var reg3 = RegExp(/main/);
      var reg4 = RegExp(/printf/);
     var reg5 = RegExp(/char/);
     var reg6 = RegExp(/union/);
    for(var i=1; i<=6;i++){
        switch(i)
{
case 1:
  if(reg1.exec(text)){
          $('#include').text(reg1)
       }
  break;
case 2:
   if(reg2.exec(text)){
          $('#int').text(reg2)
       }
    break;
case 3:
   if(reg3.exec(text)){
          $('#main').text(reg3)
       }
  break;
case 4:
   if(reg4.exec(text)){
          $('#printf').text(reg4)
       }
    break;
 case 5:
   if(reg5.exec(text)){
          $('#char').text(reg5)
       }
break;
case 6:
   if(reg6.exec(text)){
          $('#union').text(reg6)
       }
    break;
   
default:
  
}}

5.程序运行效果

源码地址:github.com/tanxiaofeng…