zoukankan      html  css  js  c++  java
  • 仿Excle公式

    参考书籍:编译原理。

    开发工具:VS2003。 

    文件:
                Scanner.dll(词法分析),其中Scanner.dll为词法分析器,原程序文件为scanner.cs ,源程序文件含:Parser.cs、ChangeTbladduction.cs、ChangeColonToComma.cs。
                Parser.dll(语法分析),功能为产生语义分析时所需的语法树,需要引用词法分析器来构造语法树,源程序文件含:Parser.cs、ChangeTbladduction.cs、ChangeColonToComma.cs。其中Parser.cs为主文件;ChangeTbladduction.cs和ChangeColonToComma.cs是将公式字符串中的“:”转换为多个“,”(一直都认为这种方法很笨,不知道Excel和OpenOffice是怎么做的)。
                Semantics.dll(语义分析),功能得到公式的最终结果,需要引用Parser.dll和Scanner.dll,源程序文件:Semantics,cs、SemanticsException.cs、MarkerDataSet.cs、Markers.cs、TDouble.cs、ChangeExpression.cs。其中Semantics,cs为主文件;SemanticsException.cs自定义的异常类(可有可无的东西);MarkerDataSet.cs是一个继承的System.Data.DataSet类,用来从数据库中获取公式中表间引用的单元格的值(若本地的可以不需要这个类);Markers.cs用来储存单元格的值,以便计算公式的值;TDouble.cs自己写的一个将字符串转换为Double/Int类型的类(很滥,不知道Excel 是怎么处理类型转换的);ChangeExpression.cs是在当增加了行或列后,同时更改公式(可有可无的东西)。

    Scanner词法分析源程序
    Parser语法分析原程序
    Semantics语义分析源程序
    实例程序
    ParserApp2.exe得到的是语法树,例如:输入=sum(A1:A5)
    结果:

    SemanticApp2.exe运行
    结果:

  • 相关阅读:
    第 5 章 Nova
    第 5 章 Nova
    第 5 章 Nova
    第 5 章 Nova
    第 5 章 Nova
    第 5 章 Nova
    第 5 章 Nova
    vba:提取字符串中间字符
    vba:根据给定单元格搜索目标值
    vba:合并当前目录下所有工作簿的全部工作表
  • 原文地址:https://www.cnblogs.com/nikytwo/p/Excle_Formla.html
Copyright © 2011-2022 走看看