文章分类 -  antler4

摘要:DOT词法规则 node, edge, graph, digraph, subgraph,strict都是大小写敏感的,比如我们想使用 这样的变量; 标识符和大多数语法一样,由字母 、下划线、数字组成,但是不能以数字开头; 是八进制表示法,十六进制范围是80 FF,所以可以写成 帮助规则DIGIT是 阅读全文
posted @ 2017-01-04 00:18 zhangshihai1232 阅读(456) 评论(0) 推荐(0)
摘要:Deriving Grammars from Language Samples Grammars包括一个名字,和互相调用的语法 需要指明«stuff»内容是什么,我们需要哪些规则,哪个是开始规则; 我们需要自顶向下,设计语法的细致结构,编码具体的规则; 右侧是其他token或者已经定义的; csv 阅读全文
posted @ 2016-12-27 14:13 zhangshihai1232 阅读(704) 评论(0) 推荐(0)
摘要:actions和属性 members在解析文件中添加了RowsParser,然后传入TokenStream和一个col自义的数字 row中判断,如果i和col相等就打印出内容 Semantic Predicates语法断言 输入一串数字:2 9 10 3 1 2 3 第一个数字是2,把后续的9.10 阅读全文
posted @ 2016-12-26 14:36 zhangshihai1232 阅读(332) 评论(0) 推荐(0)
摘要:提取类的方法 g4文件相关部分,类定义和方法定义 生成如下文件 JavaListener接口、JavaBaseListener类 JavaParser、JavaLexer JavaParser继承自Parser定义语法规则 JavaLexer继承自Lexer定义词法规则 JavaListener J 阅读全文
posted @ 2016-12-26 12:06 zhangshihai1232 阅读(511) 评论(0) 推荐(0)
摘要:antlr使用的代码如下 在调用 之后,生成了lexer CommonTokenStream CommonTokenStream BufferedTokenStream TokenStream IntStream CommonTokenStream 回归一下 BufferedTokenStream 阅读全文
posted @ 2016-12-16 10:19 zhangshihai1232 阅读(789) 评论(0) 推荐(0)
摘要:LabeledExprLexer 再次看下LabeledExprLexer的有关问题 ATNState表示ANT的状态,ATNState内部有个List存储这些状态的名字 看下RuleStartState,继承自ATNState定义了是否是getStateType返回的内容即可; Transitio 阅读全文
posted @ 2016-12-14 14:48 zhangshihai1232 阅读(785) 评论(0) 推荐(0)
摘要:Recognizer中的疑惑 在阅读Recognizer时,出现了很多新的概念 ATNInterpreter ANTLRErrorListener ANT ParseInfo Lexer 同时实现了Recognizer接口和TokenSource接口,提供了一系列的tokens源 TokenSour 阅读全文
posted @ 2016-12-14 09:52 zhangshihai1232 阅读(750) 评论(0) 推荐(0)
摘要:grammar文件 语法文件会生成LabeledExpr.tokens、LabeledExprLexer、LabeledExprParser tokens 其中tokens代表所有的符号得多种定义方式 比如这里的T__0、=是一个符号; 这里的MUL、 是一个符号; 对于例子 生成的解析树如下 La 阅读全文
posted @ 2016-12-13 14:28 zhangshihai1232 阅读(772) 评论(0) 推荐(0)
摘要:监听器 antlr解析器构造一个树,记录解析器如果识别输入语句; tree的内部节点都是用来识别和鉴定它们子节点的短语名,root是最抽象的短语名,在这里stat; 解析树的输入是tokens,Parse trees在语言识别和解释器之间; 这是非常有效的数据结构,因为它们包含所有的输入和完善的把符 阅读全文
posted @ 2016-12-01 10:22 zhangshihai1232 阅读(1284) 评论(0) 推荐(0)
摘要:通配符和非贪婪模式 (...)?, (...) and (...)+是贪婪的 在parser和lexer都可以使用,后面加上?就是非贪婪 Nongreedy Lexer Subrules c分割的注释词法,消耗全部的字符,直到 /结束 另一种 例子中的\\貌似第一个是转义符 非贪婪模式会使问题更复杂 阅读全文
posted @ 2016-11-29 20:23 zhangshihai1232 阅读(914) 评论(0) 推荐(0)
摘要:Left recursive rules 最自然的表述是左递归的,像C语言的声明及算数表达式; 然后左递归的算数表达式经常模棱两可; 1+2 3模糊的,但是可以使用语义表述 expr[pr]只能执行那些pr已经执行过的 正式的规则 Actions and Attributes Actions使用目标 阅读全文
posted @ 2016-11-29 20:22 zhangshihai1232 阅读(734) 评论(0) 推荐(0)
摘要:Lexer Rules 词法语法由词法规则组成,词法模型允许分割一个单一语法为多个子词法,lexer只能返回匹配 Lexer rule需要以大写字母命名,以区分parser rule 可以定义仅用于辅助识别tokens的Lexer rule,但是不是tokens; 这些碎片规则不会暴露给parser 阅读全文
posted @ 2016-11-29 20:22 zhangshihai1232 阅读(1298) 评论(0) 推荐(0)
摘要:BNF和EBNF BNF:Backus Naur Form 描述语言的数学方法,是定义语言的语法,非常精确,没有歧义; BNF 从一个符号开始,起始标志,给出替换前面符号的规则; 这些规则叫做书写规范,形式如下: symbol := alternative1 | alternative2 ... : 阅读全文
posted @ 2016-11-29 20:07 zhangshihai1232 阅读(1538) 评论(0) 推荐(0)
摘要:解析规则 Parser Rules Parsers包含一系列语法分析规则 java通过使用ANTLR生成的rule函数启动解析 最简单的规则是一个规则名,后跟单一的可选项,最后用分号 可以使用可选择的分隔符| 可选的规则可以是一系列的规则元素,或者是空 Alternative Labels 通过设置 阅读全文
posted @ 2016-11-29 13:35 zhangshihai1232 阅读(1190) 评论(0) 推荐(0)
摘要:语法规则 注释 单行、多行、javadoc风格; javadoc风格只能在开头使用 标识符 符号(Token)名大写开头 解析规则(Parser rule)名小写开头 后面可以跟字母、数字、下划线 允许使用Unicode字符 使用Unicode解析和词法规则名称时,需要使用下面的规则 规则 识别有效 阅读全文
posted @ 2016-11-18 19:53 zhangshihai1232 阅读(1099) 评论(0) 推荐(0)