【发布时间】:2020-06-08 11:30:07
【问题描述】:
我在 CPP 中分配了一个编码作业,我应该在其中创建一个矩阵计算器。
考虑到我需要做的只是矩阵计算、使用多态性、考虑内存消耗和更多标准,这将是一个不错的任务。
我正在苦苦挣扎的是应该是一个类似控制台的环境。
意思是启动应用程序,然后我会在提示符中键入以下命令:
scan x[3][3] \n // 这将创建标记为“x”的新矩阵并等待输入 9 个整数(可能是长整数)。
z = 添加 x y \n // 或
z = x + y \n
我熟悉自动机理论(在某种程度上),让它变得如此简单应该不是问题。 (这实际上与自动机无关) 简单意味着每行一个命令 - 因为这就是我现在正在做的事情。 我有一些解析器类可以分解命令,然后进行必要的更改。它更像是从第一个单词到最后一个单词的 if-else 树。如果我遇到无法识别的单词 - 语法/语法错误。
我要问的是一些关于如何使它更像 .. bash 的提示,例如。
由于该应用程序在 bash 中运行..
第一个问:我如何获得键入命令的历史记录? rn 当我按下箭头时,我得到了那些 ^[[A.
第二个问题:一些提示如何开始解析一些更复杂的命令,例如:a = b = c * (d + q)(暗示 'c' 可以乘以 "(d + q)" 并且 'd' 是 addable to 'q' etc..) bcs 不能用我的解析器工作的静态方式来完成。
谢谢大家。
【问题讨论】:
-
这个问题比较宽泛,我也试着回答一下。但一读到parser,我总是想知道lex-yacc(或flex-bison)是否值得……
-
@SergeBallesta 浏览了你提到的书.. 我想我想做的事情远远超出了我的期望。不过还是谢谢你。非常有趣的话题。
-
C++ 中的输入是行缓冲的,这意味着您只能在用户按下 [enter] 后接收输入。要进行“实时”交互,您需要查看诸如 ncurses 之类的库。列出最近的命令应该很容易。对向上/向下键做出反应并更新显示可能是困难的部分。
标签: c++ parsing command-prompt