使用后缀语言进行前瞻
Lookahead with postfix language
假设我有一种类似的后缀语言
3 2 result + // equivalent to result = 3 + 2
result 1 result + // equivalent to ++result
我应该如何实现递归下降解析器的前瞻性(我在C++中这样做)?
我不确定如何设计这样的解析算法,因为我无法仅从第一个令牌
我想说,您根本不需要任何前瞻性,只需要当前的令牌。
将当前令牌推到堆栈上,当您到达行的末尾(这可能是它自己的令牌)时,您会查看堆栈的顶部,看看操作是什么(当然也会将其从堆栈中弹出)。然后弹出操作所需的操作数。如果在这之后堆栈上有更多的条目,或者没有足够的操作数,那么就出现了错误。
相关文章:
- 增量运算符与后缀混淆
- 不同语言中相同代码的不同行为
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 通用C++/Python 多语言的存在
- 如何在OpenSSL库的名称中添加后缀'd'?
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 了解算法的性能差异(如果以不同的编程语言实现)
- Rextester 语言编译C++问题
- 如何将多种语言设置放在单个 .clang 格式文件中
- 不同语言中的模运算符差异
- C++17 十六进制浮点文字单精度后缀冲突?
- 刚接触C++,难以理解语言的细微差别
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 我们可以用 C 语言嵌套 #define 和 #if 吗?
- 使用带有链表的堆栈数据结构将中缀转换为后缀
- 我的C++语言蛮力算法有问题
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 为什么编程语言被编译为汇编程序而不是二进制?
- 使用后缀语言进行前瞻