-
这就是编译器中语法分析原理的用武之地
你没有发现这样的表达式可以在编译器中正确计算吗?
要实现词汇表达,语法分析就是要知道以下几点。
1.要了解数据结构,可以使用两个堆栈(数据结构中的堆栈)来实现一个简单的计算器程序。
2. 复杂的计算器程序需要使用语法树(数据结构中的二叉树)来实现。
3、对词汇分析和语法分析有较好的理解。 词汇分析就是将表达式一个接一个地转换为字符和数字,而语法分析就是将表达式转换为语法树。
4. 了解表达式的前缀、中间固定和后缀。 编译系统是优先级的一般示例吗? 这是通过将中缀表达式转换为后缀表达式来实现的。 在后缀表达式中,可以忽略表达式的优先级。
5.表达式的存储:即用什么样的方法将这个“1+2x3+4 2”表达式存储在内存中,如果是字符串,那么在词法分析中,就需要将字符转换为数字1,如1,这也是一个问题。
6、在计算的时候,是不是要先检查用户输入的表达式是否有效,最好有一些智能判断,这样才不至于在用户输入的时候注意错误的表达,这样你也可以给出计算结果,这样会误导用户。
7.建议你先写一个简单的计算器,就像Windows下的标准计算器一样,它的优先级问题需要用户自己解决。 你想写的那种计算器是高级计算器,这并不容易。
-
解决方案:文本框的 readonly 属性设置为 true
2.计算完成后,可以不按C键继续另一个操作(例如,计算10+9=19后,可以直接输入其他数字,无需按C键清除零,然后可以重新操作另一个操作)。
解决方法:设置一个布尔类型识别变量,计算结果后赋值为真,在输入过程中再次确定该标识变量的值,进行相关操作。
3.如何转换符号键,系统自带的计算器可以毫无误差地实现数字“+”或转为“-”“[2 +( )],**怎么写?
解决方案:首先,符号键的转换是对字符串进行处理,获取文本框的内容并将值赋值给一个字符串变量,并提取该变量的符号;
其次,转换纯数字部分然后计算它基本上是可以的。
如果没有,请与我打招呼,或问我。
-
第一种和第二种很简单,第三种涉及算法问题,需要特殊处理,在线计算器的实现方式很多,搜索搜索,让别人在这里提出源码是不切实际的,菜鸟应该多学点,自己动手解决问题,否则永远做不了老鸟。