一个简单的语言的语法(三):做些小调整,并将生成目标换到CSharp2 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-14
es
174.
175.LPAREN : ''(''
176. ;
177.
178.RPAREN : '')''
179. ;
180.
181.LBRACK : ''[''
182. ;
183.
184.RBRACK : '']''
185. ;
186.
187.LBRACE : ''{''
188. ;
189.
190.RBRACE : ''}''
191. ;
192.
193.COMMA : '',''
194. ;
195.
196.SEMICOLON
197. : '';''
198. ;
199.
200.PLUS : ''+''
201. ;
202.
203.MINUS : ''-''
204. ;
205.
206.MUL : ''*''
207. ;
208.
209.DIV : ''/''
210. ;
211.
212.EQEQ : ''==''
213. ;
214.
215.NE : ''!=''
216. ;
217.
218.LT : ''<''
219. ;
220.
221.LE : ''<=''
222. ;
223.
224.GT : ''>''
225. ;
226.
227.GE : ''>=''
228. ;
229.
230.BANG : ''!''
231. ;
232.
233.ANDAND : ''&&''
234. ;
235.
236.OROR : ''||''
237. ;
238.
239.EQ : ''=''
240. ;
241.
242.IF : ''if''
243. ;
244.
245.ELSE : ''else''
246. ;
247.
248.WHILE : ''while''
249. ;
250.
251.BREAK : ''break''
252. ;
253.
254.READ : ''read''
255. ;
256.
257.WRITE : ''write''
258. ;
259.
260.INT : ''int''
261. ;
262.
263.REAL : ''real''
264. ;
265.
266.Identifier
267. : LetterOrUnderscore ( LetterOrUnderscore | Digit )*
268. ;
269.
270.Integer : Digit+
271. ;
272.
273.RealNumber
274. : Digit+ ''.'' Digit+
275. ;
276.
277.fragment
278.Digit : ''0''..''9''
279. ;
280.
281.fragment
282.LetterOrUnderscore
283. : Letter | ''_''
284. ;
285.
286.fragment
287.Letter : ( ''a''..''z'' | ''A''..''Z'' )
288. ;
289.
290.WS : ( '' '' | ''\t'' | ''\r'' | ''\n'' )+ { $channel = HIDDEN; }
291. ;
292.
293.Comment
294. : ''/*'' ( options { greedy = false; } : . )* ''*/'' { $channel = HIDDEN; }
295. ;
296.
297.LineComment
298. : ''//'' ~ (''\n''|''\r'')* ''\r''? ''\n'' { $channel = HIDDEN; }
299. ;
一个简单的语言的语法(三):做些小调整,并将生成目标换到CSharp2(4)时间:2011-10-07 javaeye RednaxelaFX同上一篇一样,也写一个启动lexer和parser的程序。这次是用C#来写: C#代码 using System; using System.IO; using Antlr.Runtime; // Antlr3.Runtime.dll using Antlr.Runtime.Tree; using Antlr.Utility.Tree; // Antlr3.Utility.dll sealed class TestJerryAst { static void PrintUsage( ) { Console.WriteLine( "Usage: TestJerryAst [-dot] <source file>" ); } static void Main( string[] args ) { bool generateDot = false; string srcFile; switch ( args.Length ) { case 0: PrintUsage( ); return; case 1: if ( !File.Exists( args[ 0 ] ) ) goto case 0; srcFile = args[ 0 ]; break; default: if ( "-dot" == args[ 0 ] ) { generateDot = true; if ( !File.Exists( args[ 1 ] ) ) goto case 0; srcFile = args[ 1 ]; } else { goto case 1; } break; } var input = new ANTLRReaderStream( File.OpenText( srcFile ) ); var lexer = new JerryLexer( input ); var tokens = new CommonTokenStream( lexer ); var parser = new JerryParser( tokens ); var programReturn = parser.program(); var ast = ( CommonTre |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于一个简单的语言的语法(三):做些小调整,并将生成目标换到CSharp2 - 编程入门网的所有评论