c++ - CPP 中类似控制台的应用程序
问题描述
我在 CPP 中分配了一个编码作业,我应该在其中创建一个矩阵计算器。考虑到我需要做的只是矩阵计算、使用多态性、考虑内存消耗和更多标准,这将是一个不错的任务。我正在努力解决的是应该是一个类似控制台的环境。
意思是启动应用程序,我在提示符下键入以下命令:
扫描 x[3][3] \n // 这将创建标记为“x”的新矩阵,并等待输入 9 个整数(可能是长整数)。
z = 添加 xy \n // 或
z = x + y \n
我熟悉自动机理论(在某种程度上),让它变得如此简单应该不是问题。(这实际上与自动机无关)简单意味着每行一个命令 - 因为这就是我现在正在做的事情。我有一些解析器类可以分解命令,然后进行必要的更改。它更像是从第一个单词到最后一个单词的 if-else 树。如果我遇到无法识别的单词 - 语法/语法错误。
我要问的是一些关于如何使它更像 .. bash 的提示,例如。
由于该应用程序是在 bash 中运行的。首先
问:我如何获得键入命令的历史记录?rn 当我按下箭头时,我得到了那些 ^[[A.
第二个问题:一些提示如何开始解析一些更复杂的命令,例如:a = b = c * (d + q)(暗示 'c' 可以乘以 "(d + q)" 并且 'd' 可以添加到 'q'等等..)不能用我的解析器工作的静态方式来完成的bcs。
谢谢你们。
解决方案
对于您的第一个问题,请查看libreadline
or libeditline
。如果您不想抬起手指,请在rlwrap
包装器下运行您的程序。
对于第二个问题,请查看Simple library or implementation for a math expression evaluator。寻找一种允许您定义和使用变量的方法。
推荐阅读
- android - 如何在 Kotlin 中将字符串转换为特定格式?
- python - 为自动文档链接的视图代码部分启用突出显示
- javascript - ReferenceError Laravel 和 Javascript
- nativescript - 在 listView NATIVESCRIPT-VUE 之外使用 v-template
- c++ - 如何在 C++ 中重新实现包含 STL 指针容器的类的迭代器
- angular - 如何模拟 Observable 返回角度服务?
- html - 为什么删除边框后默认按钮会改变颜色?
- netcdf - CDO/NCO - 在维度上复制数据集
- ios - 将 CLLocationCoordinate2D 和半径转换为 GMSMapView 的缩放和中心点
- dns - JBOSS EAP 7.2 域无法启动默认服务器(服务器一,服务器二,服务器三)