一个简单的语言的语法(二):ANTLR的重写规则 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-14
. 104.whileStatement 105. : WHILE^ LPAREN! expression RPAREN! statement 106. ; 107. 108.breakStatement 109. : BREAK SEMICOLON! 110. ; 111. 112.readStatement 113. : READ^ variableAccess SEMICOLON! 114. ; 115. 116.writeStatement 117. : WRITE^ expression SEMICOLON! 118. ; 119. 120.variableAccess 121. : Identifier 122. ( -> ^( SIMPLE_VAR_ACCESS Identifier ) 123. | ( LBRACK Integer RBRACK ) + 124. -> ^( ARRAY_VAR_ACCESS Identifier Integer+ ) 125. ) 126. ; 127. 128.expression 129. : assignmentExpression 130. | logicalOrExpression 131. ; 132. 133.assignmentExpression 134. : variableAccess EQ^ expression 135. ; 136. 137.logicalOrExpression 138. : logicalAndExpression ( OROR^ logicalAndExpression )* 139. ; 140. 141.logicalAndExpression 142. : relationalExpression ( ANDAND^ relationalExpression )* 143. ; 144. 145.relationalExpression 146. : additiveExpression ( relationalOperator^ additiveExpression )? 147. | BANG^ relationalExpression 148. ; 149. 150.additiveExpression 151. : multiplicativeExpression ( additiveOperator^ multiplicativeExpression )* 152. ; 153. 154.multiplicativeExpression 155. : primaryExpression ( multiplicativeOperator^ primaryExpression )* 156. ; 157. 158.primaryExpression 159. : variableAccess 160. | Integer 161. | RealNumber 162. | LPAREN! expression RPAREN! 163. | MINUS primaryExpression 164. -> ^( UNARY_MINUS primaryExpression ) 165. ; 166. 167.relationalOperator 168. : LT | GT | EQEQ | LE | GE | NE 169. ; 170. 171.additiveOperator 172. : PLUS | MINUS 173. ; 174. 175.multiplicativeOperator 176. : MUL | DIV 177. ; 178. 179.// lexer rules 180. 181.LPAREN : ''('' 182. ; 183. 184.RPAREN : '')'' 185. ; 186. 187.LBRACK : ''['' 188. ; 189. 190.RBRACK : '']'' 191. ; 192. 193.LBRACE : ''{'' 194. ; 195. 196.RBRACE : ''}'' 197. ; 198. 199.COMMA : '','' 200. ; 201. 202.SEMICOLON 203. : '';'' 204. ; 205. 206.PLUS : ''+'' 207. ; 208. 209.MINUS : ''-'' 210. ; 211. 212.MUL : ''*'' 213. ; 214. 215.DIV : ''/'' 216. ; 217. 218.EQEQ : ''=='' 219. ; 220. 221.NE : ''!='' 222. ; 223. 224.LT : ''<'' 225. ; 226. 227.LE : ''<='' 228. ; 229. 230.GT : ''>'' 231. ; 232. 233.GE : ''>='' 234. ; 235. 236.BANG : ''!'' 237. ; 238. 239.ANDAND : ''&&'' 240. ; 241. 242.OROR : ''||'' 243. ; 244. 245.EQ : ''='' 246. ; 247. 248.IF : ''if'' 249. ; 250. 251.ELSE : ''else'' 252. ; 253. 254.WHILE : ''while'' 255. ; 256. 257.BREAK : ''break'' 258. ; 259. 260.READ : ''read'' 261. ; 262. 263.WRITE : ''write'' 264. ; 265. 266.INT : ''int'' 267. ; 268. 269.REAL : ''real'' 270. ; 271. 272.Identifier 273. : LetterOrUnderscore ( LetterOrUnderscore | Digit )* 274. ; 275. 276.Integer : Digit+ 277. ; 278. 279.RealNumber 280. : Digit+ ''.'' Digit+ 281. ; 282. 283.fragment 284.Digit : ''0''..''9'' 285. ; 286. 287.fragment 288.LetterOrUnderscore 289. : Letter | ''_'' 290. ; 291. 292.fragment 293.Letter : ( ''a''..''z'' | ''A''..''Z'' ) 294. ; 295. 296.WS : ( '' '' | ''\t'' | ''\r'' | ''\n'' )+ { $channel = HIDDEN; } 297. ; 298. 299.Comment 300. : ''/*'' ( opti |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于一个简单的语言的语法(二):ANTLR的重写规则 - 编程入门网的所有评论