c# - 是否可以从字符串/标记列表中获取左大括号的右大括号?
问题描述
我正在尝试用 c# 制作一种编程语言,所以我有一个标记列表。我遍历该标记列表以查找语法,并且在这样做时,在发现一个左大括号后,我想找到最准确的右括号以匹配左括号。
对于此示例,将有每个符号和关键字的标记列表,知道这一点,让我们继续...
红色箭头是如果我得到最近的右括号会发生什么,绿色箭头是如果我找到一种方法来准确找到一个右大括号会发生什么。
有谁知道我会怎么做?
请记住我的项目是用 C# 编写的,所以如果您有任何 C# 示例,那就太好了,谢谢!
解决方案
您的语言源代码的内部表示需要(就像所有软件一样)模拟现实。您的示例是嵌套由大括号分隔的块。所以下一步是构建语法树。匹配的右括号(如果在抽象语法树中表示)将始终是每个子树中与第一个节点处于同一级别的最后一个节点:
compilation_unit
class_definition
block_start[1]
method_definition
block_start[2]
conditional_expression
block_start[3]
function_call
block_end[3]
block_end[2]
block_end[1]
推荐阅读
- php - 我正在查看 php 显示某些内容的问题
- python - 检查Excel文件是否包含公式
- vb.net - 如何使用 WebRequest 将文件发布到网站
- node.js - 通过 SSH 在 Docker 中安装私有 npm 包
- css - 引导列调整为较短的列
- tensorflow - keras GRU层中的返回状态和返回序列有什么区别?
- c# - e.查询为 IQueryable
总是返回 null - oracle - 如何在Oracle中创建一个函数?
- amazon-web-services - 使用 Cloudformation 实现自动化 Web 应用程序部署的 AMI EC2 或 UserData 脚本?
- php - 没有外键的laravel关系