关于解析:Shunting Yard算法的反演是什么?

关于解析:Shunting Yard算法的反演是什么?

What is the inversion of the Shunting Yard algorithm?

Dijkstra的Shunting Yard算法用于解析中缀符号并生成RPN输出。

我正在寻找相反的方法,一种将RPN转换为高中数学类风格的后缀表示法的方法,以便从数据库中表示RPN表达式,以易于理解的方式放置用户。

请节省您的时间,不要自己动手编写算法,仅向我指出我似乎找不到的教科书示例。 从Shunting Yard算法向后工作,并使用我对记法的了解,我可能可以制定一个解决方案。 我只是在寻找快速捷径,因此不必重新发明轮子。

哦,请不要将此标签标记为"家庭作业",我发誓我已经失学了! ;-)


由于RPN也称为后缀表示法,因此我尝试使用Google搜索将"后缀转换为中缀",并获得了很多结果。 前几个有代码示例,但是我发现RubyQuiz条目特别具有启发性。


如果您不担心删除多余的括号,那么下面的Lisp代码将起作用:

1
2
3
4
5
6
7
8
9
10
(defun rpn-to-inf (pre)
  (if (atom pre)
      pre
      (cond ((eq (car (last pre)) 'setf)
         (list (rpn-to-inf (first pre)) '= (rpn-to-inf (second pre))))
        ((eq (car (last pre)) 'expt)
         (list (rpn-to-inf (first pre)) '^ (rpn-to-inf (second pre))))
        (t (list (rpn-to-inf (first pre))
             (car (last pre))
             (rpn-to-inf (second pre)))))))

推荐阅读

    linux输出字符串命令?

    linux输出字符串命令?,标准,基础,字符串,资料,简介,商业,数字,系统,命令,汉

    linux标准输出命令?

    linux标准输出命令?,标准,工作,系统,信息,地址,命令,环境,基础,设备,数字,lin

    linux常用输出命令?

    linux常用输出命令?,工作,系统,地址,管理,信息,标准,命令,目录,数据,位置,lin

    linux声音输出命令?

    linux声音输出命令?,电脑,系统,设备,服务,软件,数据,工具,情况,手机,命令,lin

    用linux命令输出id?

    用linux命令输出id?,系统,设备,工作,信息,地址,命令,工具,基础,目录,进程,lin

    linux命令输出太多?

    linux命令输出太多?,命令,标准,信息,时间,名称,文件,内容,屏幕,模式,目录,lin

    linux命令输出截图?

    linux命令输出截图?,工具,图片,代码,截图,环境,支柱,网络,标准,发展,命令,Lin

    防篡改算法linux命令?

    防篡改算法linux命令?,技术,网络,系统,数据,区块链,电子,交易,信息,网站,国

    linux系统输出命令?

    linux系统输出命令?,系统,工作,地址,信息,命令,工具,目录,设备,基础,发行,lin

    linux使用命令的方法?

    linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,

    linux输出第二列命令?

    linux输出第二列命令?,数据,信息,时间,软件,百度,单位,适当,系统,命令,文件,l

    linux怎么输出命令?

    linux怎么输出命令?,标准,信息,系统,状态,实时,时间,工具,分析,单位,数据,Lin

    linux命令行输出暂停?

    linux命令行输出暂停?,暂停,服务,系统,管理,代码,环境,信息,数据,网络,跨行,E

    linux命令输出加时间?

    linux命令输出加时间?,时间,系统,名称,设备,命令,信息,管理,标准,数字,百度,l

    linux命令日志输出?

    linux命令日志输出?,系统,状态,命令,情况,对比,标准,实时,服务,下来,数据,怎

    linux命令输出到vi?

    linux命令输出到vi?,工作,系统,状态,档案,命令,模式,信息,正规,第一,编辑,lin

    linux命令输出截取?

    linux命令输出截取?,位置,网上,信息,命令,字符串,字符,左边,日志,中间,之间,L

    linux命令输出计算?

    linux命令输出计算?,标准,地址,工作,信息,系统,命令,软件,数据,文件,控制台,l

    linux持续命令输出?

    linux持续命令输出?,系统,工作,地址,信息,情况,状态,数据,管理,工具,指标,lin

    linux命令行打印输出?

    linux命令行打印输出?,地址,工作,命令,网络,信息,标准,系统,文件,目录,控制