Fixed error in ruby code generation which crept in during the last change.
[external/ragel.git] / test / atoi3.rl
1 #
2 # @LANG: ruby
3 # @ALLOW_GENFLAGS: -T0
4 #
5
6 neg = false
7 val = 0
8
9 %%{
10     machine atoi3;
11     action begin {
12         neg = false;
13         val = 0;
14     }
15     action see_neg {
16         neg = true;
17     }
18     action add_digit {
19                 val = val * 10 + (fc - "0"[0]);
20     }
21     action finish {
22                 val = -1 * val if neg
23     }
24     action print {
25         puts val;
26     }
27     atoi = (('-' @ see_neg | '+') ? (digit @ add_digit) +) > begin % finish;
28     main := atoi '\n' @ print;
29 }%%
30
31 %% write data;
32
33 def run_machine( data )
34         p = 0;
35         pe = data.length
36         cs = 0
37         cs = 0
38         val = 0;
39         neg = false;
40
41         %% write init;
42         %% write exec;
43         %% write eof;
44         if  cs >= atoi3_first_final
45                 puts "ACCEPT"
46         else
47                 puts "FAIL"
48         end
49 end
50
51 inp = [
52                 "1\n",
53                 "12\n",
54                 "222222\n",
55                 "+2123\n",
56                 "213 3213\n",
57                 "-12321\n",
58                 "--123\n",
59                 "-99\n",
60                 " -3000\n",
61 ]
62
63 inp.each { |str| run_machine(str) }
64
65 =begin _____OUTPUT_____
66 1
67 ACCEPT
68 12
69 ACCEPT
70 222222
71 ACCEPT
72 2123
73 ACCEPT
74 FAIL
75 -12321
76 ACCEPT
77 FAIL
78 -99
79 ACCEPT
80 FAIL
81 =end _____OUTPUT_____