I’m trying to get started with Ragel, and found a hello world example for ruby that got me past Go. Since the C# example was a bit different, I thought I’d share what I came up with.
1 %%{
2 machine hello;
3 expr = ‘h’;
4 main := expr @ { Console.Out.WriteLine("greetings!"); } ;
5 }%%
6
7 using System;
8
9 namespace Mab.Test
10 {
11 public class Hello
12 {
13 %% write data;
14 public static void Main(string [] args)
15 {
16 foreach(var arg in args)
17 {
18 Console.WriteLine("***** " + arg + " ******");
19 Run(arg);
20 }
21 }
22
23 private static void Run(String data)
24 {
25 int cs;
26 int p = 0;
27 int pe = data.Length;
28 // init:
29 %% write init;
30 // exec:
31 %% write exec;
32 }
33 }
34 }
To see how it works, save the following code to Hello.rl and run these commands:
ragel -A Hello.rl csc /t:exe /out:test.exe Hello.cs test.exe a h z