ANTLR中文手册之三(ANTLR 元语言-元语言词汇表…

2008-02-23 09:21:04来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

在词法分析器规则中,字符串被解释成可以在输入流中匹配的一系列字符 (例如., "for" 等于 'f' 'o' 'r').

在语法分析器规则中,字符串代表一个个标记(tokens),并且每个独立的字符串被分派一个标记类型。然而,ANTLR不会创建一个词法分析器规则来匹配这些字符串。相反,ANTLR将这些字符串输入到一个于词法分析器关联的字符常量表中。ANTLR将针对字符常量表来产生代码检测每个标记中的文本,在手动关掉语法分析器对该标记的处理之前获得一个匹配时,会改变标记的类型。你也可以执行手动检测――自动代码生成可以通过词法分析器选项控制。

你可能想在你的动作中使用这些字符串常量的标记的类型值,例如在错误处理器的同步部分。对于只由字母字符组成的字符串常量来说,这个字符串常量的值将是一个形如LITERAL_xxx的常量值,这里xxx是这个标记的名字。例如,文字“return”将有一个LITERAL_return值与之关联。你也可以用标记节(tokens section)分派一个特定的标号给这个文字。

标记引用

以大写字符开头的标识符称为标记引用。接下来的字符可以是任何字符,数字或下划线。在语法分析器规则中一个标记引用将导致匹配特定的标记。在词法分析器中的标记引用将导致调用一个词法规则来匹配该标记的字符。换句话说,在词法分析器中的标记引用将对当作一个规则引用。

标记定义

在词法分析器中的标记定义由和语法规则中相同的定义。但是当做标记而不是语法规则。例如,

class MyParser extends Parser;

idList : ( ID ) ;   // parser rule definition

 

class MyLexer extends Lexer;

ID : ( 'a'..'z' )  ;   // token definition    

规则引用

以小写字母开头的标识符是为ANTLR的语法规则。接下来的字符可以是任意字母,数字或下划线。词法规则不能引用语法规则。

动作.

在尖括号中的字符序列是语义动作(可能是嵌套的)。在字符串和字符中的尖括号不是动作分隔符。

动作参数

在方括号中的字符序列是动作参数(可能是嵌套的)。在字符串和字符中的方括号不是动作分隔符。在[]中的参数是用被生成的语言的语法定义的,并且用逗号分开。

codeBlock

[int scope, String name] // input arguments

returns [int x]          // return values

: ... ;

 

// pass 2 args, get return

testcblock

{int y;}

         :         y=cblock[1,"John"]

         ;

许多人喜欢我们用普通的括号来括住参数,但是括号在EBNF中已经被很好的用来定义语法组符(grammatical grouping symbols)。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:RCP财务管理程序v2.0计划

下一篇:一个2005年末典型的Java EE场景