如何用编程来分析程序语法是否正确!想做一个类似于VB的解析器.我的想法是:程序能自动的分析给出的一段程序是否在语法上是正确的,然后可以计算出程序的结果.如:计算n!?n=inputbox("please enter n:")
s=1
for i=1 to n
  s=s*i
next i
msgbox("n!="&s)当输入如上程序时,解析器能够自动检测程序语法是否正确,正确的话输出结果.请大家帮忙谈谈想法,如何入手.有相关经验的高人能给点关键代码更加,我先谢谢大家了.

解决方案 »

  1.   

    正确的话输出结果
    //这个容易,用ScriptControl控件即可
    http://www.microsoft.com/mind/0799/script/script.asp
    http://support.microsoft.com/kb/184740/EN-US/
    http://support.microsoft.com/kb/184745/EN-US/解析器能够自动检测程序语法是否正确
    //用错误处理可以得知表达式是否正确!但是想知道错在什么地方,什么提示等等,这个比较麻烦!找本编译原理看看先 :P
      

  2.   

    既然难度很大,我现在有一个想法:能不能直接借用VB的解析器,用程序去调用VB自动的运行代码,然后返回运行的结果.
      

  3.   

    这部分难度不算大,特别是只判断语法是否正确,这比语法分析还要简单,学完了一点基础的编译原理知识后思路就有了~~~不过这部分纯粹属于是体力活.比如用LL可以这么做,先找到VB的所有文法,这个不用问我,MSDN里就能找到.然后根据文法写出产生式,根据每个非终结符的产生式写出相应推导函数,其中再递归调用其它推导函数.通过它们最后能从E通过递归展开推导出终结符构成的源程序,那就说明这段原程序正确了.如果你使用YACC这样的工具,还可以根据语法文件自动生成语法分析程序.