ANTLR4(十四) 调用在隐藏Channel里的信息

写在之前

我们曾经介绍过这样一种情况:

忽略空白和注释,但在必要的时候也能调用他们。我们的处理方法是:

将不需要的注释和空白放到 channel HIDDEN中。

那么这次,我们尝试将空白和注释放在多个Channel中。

之后我们会用一个例子演示如何读取在隐藏Channel中的信息。

将空白和注释放到不同的Channel中

注意在最新的版本中,以下这种方法已经过时了。

@lexer::members {
   
    public static final int WHITESPACE = 1;
    public static final int COMMENTS = 2;
}
...
WS  :   [ \t\n\r]+ -> channel(WHITESPACE) ;  // channel(1)

SL_COMMENT
    :   '//' .*? '\n' -> channel(COMMENTS)   // channel(2)
    ;

方便起见,我们会直接用数字指定隐藏Channel,而不是标识符

语法文件

我们只列举了需要的部分,即语法文件入口file,语法规则varDecl(变量声明语句),以及空白词法和注释词法。

可以观察到,我们将空白词法移到了Channel1,将注释词法移到了Channel2。(注意默认的Channel是Channel0,其它的Channel都是HIDDEN类型)

//Cymbol.g4
grammar Cymbol;

file:   (functionDecl | varDecl)+ ;

varDecl
    :   type ID ('=' expr)? ';'
    ;
...
WS  :   [ \t\n\r]+ -> channel(1) ;  // channel(1)

SL_COMMENT
    :   '//' .*? '\n' -> channel(2
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C# 中使用 ANTLR4,你需要完成以下步骤: 1. 下载 ANTLR4 的 C# 运行时库,可以通过 NuGet 包管理器来获取。 2. 使用 ANTLR4 工具生成解析器和词法器的代码,我们可以使用 ANTLR4 工具生成 C# 代码,并将其添加到你的项目中。 3. 根据你的语法规则编写解析器和词法器的处理程序,以便将输入的文本转换为抽象语法树。 4. 在你的 C# 代码中使用解析器和词法器,解析输入的文本并处理抽象语法树。 下面是一个简单的步骤流程: 1. 安装 ANTLR4 工具和 C# 运行时库。 你可以从 ANTLR4 官网下载 ANTLR4 工具,或者使用 NuGet 包管理器来获取 ANTLR4 的 C# 运行时库。 2. 编写语法文件。 使用 ANTLR4 工具编写语法文件,定义词法规则和语法规则,并生成解析器和词法器的代码。 3. 将生成的代码添加到你的项目中。 将生成的代码添加到你的 C# 项目中,并进行必要的修改(例如,根据你的命名约定)。 4. 编写解析器和词法器的处理程序。 根据你的语法规则编写解析器和词法器的处理程序,并将其添加到你的 C# 项目中。 5. 在你的 C# 代码中使用解析器和词法器。 使用解析器和词法器解析输入的文本,并处理抽象语法树。 总之,你需要将 ANTLR4 工具和 C# 运行时库集成到你的 C# 项目中,并根据你的语法规则编写解析器和词法器的处理程序。然后,你就可以使用解析器和词法器解析输入的文本并处理抽象语法树了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值