java.tree.g
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:5k
源码类别:

编译器/解释器

开发平台:

Others

  1. options {
  2. language="Cpp";
  3. }
  4. /** Java 1.2 AST Recognizer Grammar
  5.  *
  6.  * Author:
  7.  * Terence Parr parrt@magelang.com
  8.  *
  9.  * Version tracking now done with following ID:
  10.  *
  11.  * $Id: //depot/code/org.antlr/release/antlr-2.7.0/examples/cpp/java/java.tree.g#1 $
  12.  *
  13.  * This grammar is in the PUBLIC DOMAIN
  14.  *
  15.  * BUGS
  16.  */
  17. class JavaTreeParser extends TreeParser;
  18. options {
  19. importVocab=Java;
  20. }
  21. compilationUnit
  22. : (packageDefinition)?
  23. (importDefinition)*
  24. (typeDefinition)*
  25. ;
  26. packageDefinition
  27. : #( PACKAGE_DEF identifier )
  28. ;
  29. importDefinition
  30. : #( IMPORT identifierStar )
  31. ;
  32. typeDefinition
  33. : #(CLASS_DEF modifiers IDENT extendsClause implementsClause objBlock )
  34. | #(INTERFACE_DEF modifiers IDENT extendsClause interfaceBlock )
  35. ;
  36. typeSpec
  37. : #(TYPE typeSpecArray)
  38. ;
  39. typeSpecArray
  40. : #( ARRAY_DECLARATOR typeSpecArray )
  41. | type
  42. ;
  43. type: identifier
  44. | builtInType
  45. ;
  46. builtInType
  47.     :   "void"
  48.     |   "boolean"
  49.     |   "byte"
  50.     |   "char"
  51.     |   "short"
  52.     |   "int"
  53.     |   "float"
  54.     |   "long"
  55.     |   "double"
  56.     ;
  57. modifiers
  58. : #( MODIFIERS (modifier)* )
  59. ;
  60. modifier
  61.     :   "private"
  62.     |   "public"
  63.     |   "protected"
  64.     |   "static"
  65.     |   "transient"
  66.     |   "final"
  67.     |   "abstract"
  68.     |   "native"
  69.     |   "threadsafe"
  70.     |   "synchronized"
  71.     |   "const"
  72.     |   "volatile"
  73.     ;
  74. extendsClause
  75. : #(EXTENDS_CLAUSE (identifier)* )
  76. ;
  77. implementsClause
  78. : #(IMPLEMENTS_CLAUSE (identifier)* )
  79. ;
  80. interfaceBlock
  81. : #( OBJBLOCK
  82. ( methodDecl
  83. | variableDef
  84. )*
  85. )
  86. ;
  87. objBlock
  88. : #( OBJBLOCK
  89. ( ctorDef
  90. | methodDef
  91. | variableDef
  92. | typeDefinition
  93. | #(STATIC_INIT slist)
  94. | #(INSTANCE_INIT slist)
  95. )*
  96. )
  97. ;
  98. ctorDef
  99. : #(CTOR_DEF modifiers methodHead slist)
  100. ;
  101. methodDecl
  102. : #(METHOD_DEF modifiers typeSpec methodHead)
  103. ;
  104. methodDef
  105. : #(METHOD_DEF modifiers typeSpec methodHead (slist)?)
  106. ;
  107. variableDef
  108. : #(VARIABLE_DEF modifiers typeSpec variableDeclarator varInitializer)
  109. ;
  110. parameterDef
  111. : #(PARAMETER_DEF modifiers typeSpec IDENT )
  112. ;
  113. objectinitializer
  114. : #(INSTANCE_INIT slist)
  115. ;
  116. variableDeclarator
  117. : IDENT
  118. | LBRACK variableDeclarator
  119. ;
  120. varInitializer
  121. : #(ASSIGN initializer)
  122. |
  123. ;
  124. initializer
  125. : expression
  126. | arrayInitializer
  127. ;
  128. arrayInitializer
  129. : #(ARRAY_INIT (initializer)*)
  130. ;
  131. methodHead
  132. : IDENT #( PARAMETERS (parameterDef)* ) (throwsClause)?
  133. ;
  134. throwsClause
  135. : #( "throws" (identifier)* )
  136. ;
  137. identifier
  138. : IDENT
  139. | #( DOT identifier IDENT )
  140. ;
  141. identifierStar
  142. : IDENT
  143. | #( DOT identifier (STAR|IDENT) )
  144. ;
  145. slist
  146. : #( SLIST (stat)* )
  147. ;
  148. stat: typeDefinition
  149. | variableDef
  150. | expression
  151. | #(LABELED_STAT IDENT stat)
  152. | #("if" expression stat (stat)? )
  153. | #( "for"
  154. #(FOR_INIT (variableDef | elist)?)
  155. #(FOR_CONDITION (expression)?)
  156. #(FOR_ITERATOR (elist)?)
  157. stat
  158. )
  159. | #("while" expression stat)
  160. | #("do" stat expression)
  161. | #("break" (IDENT)? )
  162. | #("continue" (IDENT)? )
  163. | #("return" (expression)? )
  164. | #("switch" expression (caseGroup)*)
  165. | #("throw" expression)
  166. | #("synchronized" expression stat)
  167. | tryBlock
  168. | slist // nested SLIST
  169. | EMPTY_STAT
  170. ;
  171. caseGroup
  172. : #(CASE_GROUP (#("case" expression) | "default")+ slist)
  173. ;
  174. tryBlock
  175. : #( "try" slist (handler)* (#("finally" slist))? )
  176. ;
  177. handler
  178. : #( "catch" parameterDef slist )
  179. ;
  180. elist
  181. : #( ELIST (expression)* )
  182. ;
  183. expression
  184. : #(EXPR expr)
  185. ;
  186. expr: #(QUESTION expr expr expr) // trinary operator
  187. | #(ASSIGN expr expr) // binary operators...
  188. | #(PLUS_ASSIGN expr expr)
  189. | #(MINUS_ASSIGN expr expr)
  190. | #(STAR_ASSIGN expr expr)
  191. | #(DIV_ASSIGN expr expr)
  192. | #(MOD_ASSIGN expr expr)
  193. | #(SR_ASSIGN expr expr)
  194. | #(BSR_ASSIGN expr expr)
  195. | #(SL_ASSIGN expr expr)
  196. | #(BAND_ASSIGN expr expr)
  197. | #(BXOR_ASSIGN expr expr)
  198. | #(BOR_ASSIGN expr expr)
  199. | #(LOR expr expr)
  200. | #(LAND expr expr)
  201. | #(BOR expr expr)
  202. | #(BXOR expr expr)
  203. | #(BAND expr expr)
  204. | #(NOT_EQUAL expr expr)
  205. | #(EQUAL expr expr)
  206. | #(LT_ expr expr)
  207. | #(GT expr expr)
  208. | #(LE expr expr)
  209. | #(GE expr expr)
  210. | #(SL expr expr)
  211. | #(SR expr expr)
  212. | #(BSR expr expr)
  213. | #(PLUS expr expr)
  214. | #(MINUS expr expr)
  215. | #(DIV expr expr)
  216. | #(MOD expr expr)
  217. | #(STAR expr expr)
  218. | #(INC expr)
  219. | #(DEC expr)
  220. | #(POST_INC expr)
  221. | #(POST_DEC expr)
  222. | #(BNOT expr)
  223. | #(LNOT expr)
  224. | #("instanceof" expr expr)
  225. | #(UNARY_MINUS expr)
  226. | #(UNARY_PLUS expr)
  227. | primaryExpression
  228. ;
  229. primaryExpression
  230.     :   IDENT
  231.     |   #( DOT
  232. ( expr
  233. ( IDENT
  234. | arrayIndex
  235. | "this"
  236. | "class"
  237. | #( "new" IDENT elist )
  238. )
  239. | #(ARRAY_DECLARATOR type)
  240. | builtInType ("class")?
  241. )
  242. )
  243. | arrayIndex
  244. | #(METHOD_CALL primaryExpression elist)
  245. | #(TYPECAST typeSpec expr)
  246. |   newExpression
  247. |   constant
  248.     |   "super"
  249.     |   "true"
  250.     |   "false"
  251.     |   "this"
  252.     |   "null"
  253. | typeSpec // type name used with instanceof
  254. ;
  255. arrayIndex
  256. : #(INDEX_OP primaryExpression expression)
  257. ;
  258. constant
  259.     :   NUM_INT
  260.     |   CHAR_LITERAL
  261.     |   STRING_LITERAL
  262.     |   NUM_FLOAT
  263.     ;
  264. newExpression
  265. : #( "new" type
  266. ( newArrayDeclarator (arrayInitializer)?
  267. | elist
  268. )
  269. )
  270. ;
  271. newArrayDeclarator
  272. : #( ARRAY_DECLARATOR (newArrayDeclarator)? (expression)? )
  273. ;