栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

获取Antlr规则的原始文本

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取Antlr规则的原始文本

而不是

skip()
-ping
WS
令牌,也将其放在
HIDDEN
通道上:

grammar Example;@parser::members {  void calculateSha1(String text) {    try {      java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-1");      byte[] sha1 = md.digest(text.getBytes());      System.out.println(text + "n" + java.util.Arrays.toString(sha1) + "n");    } catch(Exception e) {      e.printStackTrace();    }  }}parse   :  method+ EOF  ;method@after{calculateSha1($text);}  :  'call' ID  ;ID      : 'A'..'Z'+;WS      : (' ' | 't' | 'n' | 'r')+ {$channel=HIDDEN;};COMMENT : '' {$channel=HIDDEN;};

上面的语法可以通过以下方式进行测试:

import org.antlr.runtime.*;public class Main {  public static void main(String[] args) throws Exception {    String source = "call ABC call  ABC";    ExampleLexer lexer = new ExampleLexer(new ANTLRStringStream(source));    ExampleParser parser = new ExampleParser(new CommonTokenStream(lexer));    parser.parse();  }}

它将以下内容打印到控制台:

致电ABC[48,-45,113,5,-52,-128,-78,75,-52,-97,-35,25,-55,59,-85,96,-58,58,-96, 10]致电/ * DEF * / ABC[-57,-2,-115,-104,77,-37,4,93,116,-123,-47,-4,33,42,-68,-95,-43,91,94, 77]

即:相同的解析器规则,但不同

$text
的(因此具有不同的SHA1)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595716.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号