是否可以从字符串/令牌列表中获取开括号的闭括号?

问题描述 投票:0回答:1

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

在此示例中,每个符号和关键字都有一个令牌列表,知道了,让我们继续...

这里是示例:

红色箭头表示如果我获得最近的右括号,而绿色箭头表示如果我找到一种方法来精确找到右大括号。

有人知道我会怎么做吗?

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

c# mono
1个回答
0
投票

您的语言源代码的内部表示需要(就像所有软件一样)为现实建模。您的示例是用大括号分隔的嵌套块。因此,下一步是构建语法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]
© www.soinside.com 2019 - 2024. All rights reserved.