当前位置: 首页 > 编程笔记 >

ANTLR 简单规则

祁聪
2023-03-14
本文向大家介绍ANTLR 简单规则,包括了ANTLR 简单规则的使用技巧和注意事项,需要的朋友参考一下

示例

Lexer规则定义令牌类型。它们的名称必须以大写字母开头,以区别于解析器规则。

INTEGER: [0-9]+;
IDENTIFIER: [a-zA-Z_] [a-zA-Z_0-9]*;

OPEN_PAREN: '(';
CLOSE_PAREN: ')';

基本语法:

语法 含义
A 匹配名称为lexer的规则或片段 A
A B 比赛A之后B
(A|B) 匹配A或B
'text' 匹配文字“文本”
A? 匹配A零或一次
A* 匹配A零次或多次
A+ 匹配A一次或多次
[A-Z0-9] 在定义的范围内匹配一个字符(在此示例中,在AZ或0-9之间)
'a'..'z' 字符范围的替代语法
~[A-Z] 取反范围-匹配不在该范围内的任何单个字符
. 匹配任何单个字符
 类似资料:
  • 本文向大家介绍ANTLR 优先规则,包括了ANTLR 优先规则的使用技巧和注意事项,需要的朋友参考一下 示例 几个词法分析器规则可以匹配相同的输入文本。在这种情况下,令牌类型将选择如下: 首先,选择与最长输入匹配的词法分析器规则 如果文本与隐式定义的标记匹配(例如'{'),请使用隐式规则 如果多个词法分析器规则匹配相同的输入长度,请根据定义顺序选择第一个 以下是组合语法: 给出以下输入: 将从词法

  • 本文向大家介绍ANTLR 隐式词法规则,包括了ANTLR 隐式词法规则的使用技巧和注意事项,需要的朋友参考一下 示例 当'{'在解析器规则中使用like标记时,将为它们创建隐式词法分析器规则,除非存在显式规则。 换句话说,如果您有词法分析器规则: 然后,这两个解析器规则都是等效的: 但是,如果OPEN_BRACE是词法规则没有定义,一个隐含的匿名规则将被创建。在这种情况下,隐含的规则将被定义为,如

  • 问题内容: 我想开始使用ANTLR,但是花了几个小时在antlr.org网站上回顾了这些示例之后,我仍然对Java语法没有一个清晰的了解。 是否有一些简单的示例,例如使用ANTLR实现的四运算计算器,经过解析器定义,一直到Java源代码? 问题答案: 注意:此答案适用于ANTLR3!如果你正在寻找ANTLR4的示例,那么此问答将演示如何使用ANTLR4创建简单的表达式解析器和评估器。 你首先创建一

  • 我是ANTLR4的新手,我试图解析此输入 在这个输入中,A应该是一个函数调用,而B应该是一个名为B的变量。但我在lexer中有一个跳过空格的规则。 如何为此输入编写解析器规则,但保留跳过空格的规则 提前感谢

  • 我需要以下令牌: 允许的字符包括大写、小写、数字、空格和连字符 长度不固定(长度必须至少为两个字符) 标记必须至少包含一个空格或连字符 令牌必须以大写、小写、数字、空格或连字符开头和结尾(不能以空格开头或结尾) 下面语法中的ANTLR lexer规则“alphanumericspacehyphen”除了一个情况外几乎都起作用。使用解析器规则“sic”进行测试,以下输入将解析(不带引号): 以下输入

  • 本文向大家介绍JavaScript 中的 this 简单规则,包括了JavaScript 中的 this 简单规则的使用技巧和注意事项,需要的朋友参考一下 几条规则确定函数里的 this 是什么。 想确定 this 是什么其实非常简单。总体的规则是,通过检查它的调用位置,在函数被调用的的时候确定 this。它遵循下面这些规则,接下来以优先级顺序说明。 规则 1、如果在调用函数时使用 new 关键字