是否可以从 strings/tokens 列表中获取左花括号的右花括号?

Is it possible to get the closing curly bracket for an opening curly bracket from a list of strings/tokens?

我正在尝试用 c# 编写一种编程语言,所以我有一个标记列表。我遍历该标记列表以查找语法,在这样做时,在发现左大括号后,我想找到最准确的右括号以匹配左括号。

对于这个例子,每个符号和关键字都有一个标记列表,知道了,让我们继续...

示例如下:

红色箭头是如果我得到最近的右括号会发生什么,绿色箭头是如果我找到一种方法来准确找到右大括号会发生什么。

有人知道我会怎么做吗?

请记住我的项目是用 C# 编写的,所以如果您有任何 C# 示例,那就太好了,谢谢!

您的语言源代码的内部表示需要(就像所有软件一样)模拟现实。您的示例是由大括号分隔的嵌套块。所以下一步是构建语法 tree。匹配的右括号(如果完全在抽象语法树中表示)将始终是每个子树中与第一个相同级别的最后一个节点:

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]