当前位置: 首页 > 知识库问答 >
问题:

通用编程语言如何解析中缀表达式?

常心水
2023-03-14

我最近在阅读一篇关于数据结构的文档时遇到了这个问题。

"处理内缀符号的算法在时间和空间消耗方面可能是困难和昂贵的"。

算术表达式可以用前缀表示法或后缀表示法编写,而不改变表达式的本质或输出。我关注的是:

>

  • 对于给定的表达式,在使用中缀表示法与前缀或后缀表示法处理表达式时,在内存空间和处理时间方面是否存在显著差异?

    通用编程语言如何处理中缀表达式?

    I.他们是直接处理它们,还是

    二.在处理它们之前,他们是否首先将它们转换为后缀/前缀符号,如果是这样,为什么不能直接访问此转换功能,以便能够直接运行后缀和前缀符号?

    P. S:我试图在谷歌chrome的v8 javascript控制台上运行一个简单的算术表达式a b的前缀/后缀符号,首先将变量a和b分配给整数值,然后将它们作为ab和ab运行,最后我分别得到了同步错误和引用错误...我想知道引擎是否在显示结果之前对表达式进行自己的转换(在解释级别)。

  • 共有1个答案

    向子安
    2023-03-14

    1)处理后缀表达式实际上比处理内缀表达式更快,使用更少的内存,但这种差异并不显著。所需的代码也简单得多,但通常也不重要。一般来说,如果有人正在为一门新语言编写编译器或解释器,那么他们应该能够有效地处理内缀表达式,并且语言的语法应该被设计成尽可能有用,而不是简单尽可能地编译或解释。

    2) 编程语言解释器可以直接处理中缀表达式。然而,所有编译器和大多数解释器都会将表达式和语句翻译成另一种形式,而这种形式根本不是真正的表达式,因为它不是文本。有时这是一种中间表示(IR),可以再次转换为机器代码。中间表示可以是基于堆栈、SSA或其他。同样,这不是文本,所以它没有表达式,也不需要解析。

    https://en.wikipedia.org/wiki/Intermediate_representationhttps://en.wikipedia.org/wiki/Static_single_assignment_form

     类似资料:
    • 我正在使用Spring3.2。11.1版本和Java 6(此时不提供升级Java的选项)。我正在编写自己的注释,其中一个表达式可以表示为类似SpEL的数组… 我的问题是,在Java中,如何将其解析为String[]数组?我认为Spring已经提供了一些预先存在的逻辑,可以防止我不得不编写复杂的正则表达式来解析文本。

    • 易语言破解 1、借助E-Code Explorer查找按钮事件 2、下消息断点,查看堆栈再返回 3、eCode法–断按钮事件 4、字符串法—插件/搜索所有参考文本 按钮事件固定模式: 0040EC78 837D F4 00 cmp dword ptr ss:[ebp-C],0 ;关键判断 0040EC7C 0F84 3B000000 je dcse.0040ECBD ;关键跳 0040EC82 6

    • VB语言破解 1、VBExplorer查找按钮事件 2、有提示框则 bp rtcMsgBox(断对话框) 3、通过bp __vbaStrCmp/__vbaStrComp/__vbaVarTstEq 4、万能断点法(816C24法) 5、字符串法—插件/搜索所有参考文本

    • 本文向大家介绍解析Go语言编程中的struct结构,包括了解析Go语言编程中的struct结构的使用技巧和注意事项,需要的朋友参考一下 struct和C语言的很相似,模拟出class的功能,但是不完全的!没有构造函数等! struct的申明 go指针操作 如下我们要对数值进行改变,先要取内存地址,然后再内存地址上改变他的引用 匿名结构 (1)匿名内部结构的使用 (2)匿名类值不需要数据名称、在赋值

    • 问题内容: 我有一个简单的Spring Bean表达式,当我在应用程序上下文文件中定义它时,它的计算效果很好: 现在,我想以编程方式进行相同的评估。我使用了以下代码: 抛出一个异常: 我想我必须以某种方式设置一个根对象,该根对象允许像属性一样配置的bean。但是我还没有开始工作。任何人都已经这样做并且可以提供提示了吗? 问题答案: 实现BeanFactoryAware以获得对bean工厂的引用;然

    • 本文向大家介绍中缀表达式转后缀表达式相关面试题,主要包含被问及中缀表达式转后缀表达式时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 对于中缀表达式,遇到操作数直接将其输出,如果遇到操作符和左括号全部压入栈中,若遇到右括号则将栈中元素全部弹出,直到遇到左括号为止。压栈过程中,若遇到其它操作符,从栈中弹出元素直到遇到更低优先级的操作符为止。