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.程序运行效果
