csquare-cast 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gemtest +0 -0
- data/History.txt +130 -0
- data/Manifest.txt +22 -0
- data/README.rdoc +2200 -0
- data/Rakefile +55 -0
- data/cast.gemspec +26 -0
- data/ext/cast/cast.c +8 -0
- data/ext/cast/cast.h +144 -0
- data/ext/cast/extconf.rb +3 -0
- data/ext/cast/parser.c +287 -0
- data/ext/cast/yylex.c +6610 -0
- data/ext/cast/yylex.re +324 -0
- data/lib/cast.rb +14 -0
- data/lib/cast/c.tab.rb +3414 -0
- data/lib/cast/c.y +901 -0
- data/lib/cast/c_nodes.rb +1096 -0
- data/lib/cast/inspect.rb +57 -0
- data/lib/cast/node.rb +740 -0
- data/lib/cast/node_list.rb +841 -0
- data/lib/cast/parse.rb +255 -0
- data/lib/cast/preprocessor.rb +78 -0
- data/lib/cast/tempfile.rb +186 -0
- data/lib/cast/to_s.rb +555 -0
- data/test/test_helper.rb +192 -0
- metadata +118 -0
data/Rakefile
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
|
5
|
+
# Fix for problem described here: https://github.com/jbarnette/isolate/pull/39
|
6
|
+
module Gem
|
7
|
+
Deprecate = Module.new do
|
8
|
+
include Deprecate
|
9
|
+
end
|
10
|
+
end
|
11
|
+
require 'isolate/now'
|
12
|
+
|
13
|
+
|
14
|
+
require 'hoe'
|
15
|
+
|
16
|
+
Hoe.plugin :compiler
|
17
|
+
Hoe.plugin :git
|
18
|
+
|
19
|
+
h = Hoe.spec 'cast' do
|
20
|
+
self.require_ruby_version ">=1.9"
|
21
|
+
self.developer('George Ogata', 'george.ogata@gmail.com')
|
22
|
+
self.readme_file = 'README.rdoc'
|
23
|
+
self.spec_extras[:name] = "csquare-cast"
|
24
|
+
end
|
25
|
+
|
26
|
+
task :default => :test
|
27
|
+
|
28
|
+
require 'rake/testtask'
|
29
|
+
|
30
|
+
dlext = RbConfig::CONFIG['DLEXT']
|
31
|
+
|
32
|
+
|
33
|
+
# lexer
|
34
|
+
file 'ext/cast/yylex.c' => 'ext/cast/yylex.re' do |t|
|
35
|
+
sh "re2c #{t.prerequisites[0]} > #{t.name}"
|
36
|
+
end
|
37
|
+
|
38
|
+
# parser
|
39
|
+
file 'lib/cast/c.tab.rb' => 'lib/cast/c.y' do |t|
|
40
|
+
sh "racc #{t.prerequisites[0]}"
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "Run unit tests."
|
44
|
+
Rake::TestTask.new(:test => :lib) do |t|
|
45
|
+
t.libs << 'ext' << 'test'
|
46
|
+
t.test_files = FileList['test/*_test.rb']
|
47
|
+
t.verbose = true
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Run irb with cast loaded."
|
51
|
+
task :irb => :compile do
|
52
|
+
sh 'irb -Ilib:ext -rcast'
|
53
|
+
end
|
54
|
+
|
55
|
+
|
data/cast.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
spec = Gem::Specification.new do |s|
|
2
|
+
s.name = 'cast'
|
3
|
+
s.summary = "C parser and AST constructor."
|
4
|
+
s.version = '0.2.0'
|
5
|
+
s.author = 'George Ogata'
|
6
|
+
s.email = 'george.ogata@gmail.com'
|
7
|
+
s.homepage = 'http://cast.rubyforge.org'
|
8
|
+
s.rubyforge_project = 'cast'
|
9
|
+
|
10
|
+
s.platform = Gem::Platform::RUBY
|
11
|
+
s.extensions << 'ext/cast/extconf.rb'
|
12
|
+
s.files = Dir['README', 'ChangeLog', '{lib,ext,doc,test}/**/*'] - Dir['ext/**/*.{bundle,so,o}']
|
13
|
+
s.test_files = Dir['test/*']
|
14
|
+
|
15
|
+
s.add_development_dependency 'racc'
|
16
|
+
s.requirements << 're2c for development'
|
17
|
+
s.requirements << 'a precompiler such as GCC'
|
18
|
+
s.post_install_message =<<MSG
|
19
|
+
****************************************************
|
20
|
+
Make sure you have the C preprocessor for your Ruby.
|
21
|
+
To find the C preprocessor command for your Ruby:
|
22
|
+
|
23
|
+
ruby -rrbconfig -e "puts RbConfig::CONFIG['CPP']"
|
24
|
+
****************************************************
|
25
|
+
MSG
|
26
|
+
end
|
data/ext/cast/cast.c
ADDED
data/ext/cast/cast.h
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
#ifndef CAST_H
|
2
|
+
#define CAST_H 1
|
3
|
+
#include <assert.h>
|
4
|
+
#include <ruby.h>
|
5
|
+
|
6
|
+
/* Modules and classes.
|
7
|
+
*/
|
8
|
+
extern VALUE cast_mC;
|
9
|
+
extern VALUE cast_cParser;
|
10
|
+
extern VALUE cast_eParseError;
|
11
|
+
|
12
|
+
/*
|
13
|
+
* -------------------------------------------------------------------
|
14
|
+
* Helpers
|
15
|
+
* -------------------------------------------------------------------
|
16
|
+
*/
|
17
|
+
|
18
|
+
#define Get_Struct(value, type, sval) do { \
|
19
|
+
sval = (cast_##type *)DATA_PTR(value); \
|
20
|
+
} while (0)
|
21
|
+
|
22
|
+
#define Find_Struct(value, type, sval) do { \
|
23
|
+
if (!rb_obj_is_kind_of(value, cast_c##type)) \
|
24
|
+
rb_raise(rb_eTypeError, #type " expected, got %s", rb_obj_classname(value)); \
|
25
|
+
sval = (cast_##type *)DATA_PTR(value); \
|
26
|
+
} while (0)
|
27
|
+
|
28
|
+
#define Wrap_Struct(ptr, type, klass) \
|
29
|
+
Data_Wrap_Struct(klass, cast_##type##_mark, cast_##type##_free, ptr)
|
30
|
+
|
31
|
+
/*
|
32
|
+
* -------------------------------------------------------------------
|
33
|
+
* Parser
|
34
|
+
* -------------------------------------------------------------------
|
35
|
+
*/
|
36
|
+
|
37
|
+
typedef struct {
|
38
|
+
/* stuff used by yylex */
|
39
|
+
char *bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof;
|
40
|
+
long lineno; /* line number */
|
41
|
+
VALUE token; /* last token (2-element array) */
|
42
|
+
} cast_Parser;
|
43
|
+
|
44
|
+
VALUE cast_Parser_alloc(VALUE klass);
|
45
|
+
void cast_Parser_mark(cast_Parser *parser);
|
46
|
+
void cast_Parser_free(cast_Parser *parser);
|
47
|
+
VALUE cast_Parser_next_token(VALUE self);
|
48
|
+
void yylex(VALUE self, cast_Parser *p);
|
49
|
+
void cast_init_parser(void);
|
50
|
+
|
51
|
+
/* Lexer symbols. */
|
52
|
+
extern VALUE cast_sym_AUTO;
|
53
|
+
extern VALUE cast_sym_BREAK;
|
54
|
+
extern VALUE cast_sym_CASE;
|
55
|
+
extern VALUE cast_sym_CHAR;
|
56
|
+
extern VALUE cast_sym_CONST;
|
57
|
+
extern VALUE cast_sym_CONTINUE;
|
58
|
+
extern VALUE cast_sym_DEFAULT;
|
59
|
+
extern VALUE cast_sym_DO;
|
60
|
+
extern VALUE cast_sym_DOUBLE;
|
61
|
+
extern VALUE cast_sym_ELSE;
|
62
|
+
extern VALUE cast_sym_ENUM;
|
63
|
+
extern VALUE cast_sym_EXTERN;
|
64
|
+
extern VALUE cast_sym_FLOAT;
|
65
|
+
extern VALUE cast_sym_FOR;
|
66
|
+
extern VALUE cast_sym_GOTO;
|
67
|
+
extern VALUE cast_sym_IF;
|
68
|
+
extern VALUE cast_sym_INT;
|
69
|
+
extern VALUE cast_sym_LONG;
|
70
|
+
extern VALUE cast_sym_REGISTER;
|
71
|
+
extern VALUE cast_sym_RETURN;
|
72
|
+
extern VALUE cast_sym_SHORT;
|
73
|
+
extern VALUE cast_sym_SIGNED;
|
74
|
+
extern VALUE cast_sym_SIZEOF;
|
75
|
+
extern VALUE cast_sym_STATIC;
|
76
|
+
extern VALUE cast_sym_STRUCT;
|
77
|
+
extern VALUE cast_sym_SWITCH;
|
78
|
+
extern VALUE cast_sym_TYPEDEF;
|
79
|
+
extern VALUE cast_sym_UNION;
|
80
|
+
extern VALUE cast_sym_UNSIGNED;
|
81
|
+
extern VALUE cast_sym_VOID;
|
82
|
+
extern VALUE cast_sym_VOLATILE;
|
83
|
+
extern VALUE cast_sym_WHILE;
|
84
|
+
extern VALUE cast_sym_INLINE;
|
85
|
+
extern VALUE cast_sym_RESTRICT;
|
86
|
+
extern VALUE cast_sym_BOOL;
|
87
|
+
extern VALUE cast_sym_COMPLEX;
|
88
|
+
extern VALUE cast_sym_IMAGINARY;
|
89
|
+
|
90
|
+
extern VALUE cast_sym_FCON;
|
91
|
+
extern VALUE cast_sym_ICON;
|
92
|
+
extern VALUE cast_sym_ID;
|
93
|
+
extern VALUE cast_sym_SCON;
|
94
|
+
extern VALUE cast_sym_CCON;
|
95
|
+
extern VALUE cast_sym_TYPENAME;
|
96
|
+
|
97
|
+
extern VALUE cast_sym_ADDEQ;
|
98
|
+
extern VALUE cast_sym_ANDAND;
|
99
|
+
extern VALUE cast_sym_ANDEQ;
|
100
|
+
extern VALUE cast_sym_DEC;
|
101
|
+
extern VALUE cast_sym_ARROW;
|
102
|
+
extern VALUE cast_sym_DIVEQ;
|
103
|
+
extern VALUE cast_sym_ELLIPSIS;
|
104
|
+
extern VALUE cast_sym_EQEQ;
|
105
|
+
extern VALUE cast_sym_GEQ;
|
106
|
+
extern VALUE cast_sym_INC;
|
107
|
+
extern VALUE cast_sym_LEQ;
|
108
|
+
extern VALUE cast_sym_LSHIFT;
|
109
|
+
extern VALUE cast_sym_LSHIFTEQ;
|
110
|
+
extern VALUE cast_sym_MODEQ;
|
111
|
+
extern VALUE cast_sym_MULEQ;
|
112
|
+
extern VALUE cast_sym_NEQ;
|
113
|
+
extern VALUE cast_sym_OREQ;
|
114
|
+
extern VALUE cast_sym_OROR;
|
115
|
+
extern VALUE cast_sym_RSHIFT;
|
116
|
+
extern VALUE cast_sym_RSHIFTEQ;
|
117
|
+
extern VALUE cast_sym_SUBEQ;
|
118
|
+
extern VALUE cast_sym_XOREQ;
|
119
|
+
|
120
|
+
extern VALUE cast_sym_SEMICOLON;
|
121
|
+
extern VALUE cast_sym_LBRACE;
|
122
|
+
extern VALUE cast_sym_RBRACE;
|
123
|
+
extern VALUE cast_sym_COMMA;
|
124
|
+
extern VALUE cast_sym_COLON;
|
125
|
+
extern VALUE cast_sym_EQ;
|
126
|
+
extern VALUE cast_sym_LPAREN;
|
127
|
+
extern VALUE cast_sym_RPAREN;
|
128
|
+
extern VALUE cast_sym_LBRACKET;
|
129
|
+
extern VALUE cast_sym_RBRACKET;
|
130
|
+
extern VALUE cast_sym_DOT;
|
131
|
+
extern VALUE cast_sym_AND;
|
132
|
+
extern VALUE cast_sym_BANG;
|
133
|
+
extern VALUE cast_sym_NOT;
|
134
|
+
extern VALUE cast_sym_SUB;
|
135
|
+
extern VALUE cast_sym_ADD;
|
136
|
+
extern VALUE cast_sym_MUL;
|
137
|
+
extern VALUE cast_sym_DIV;
|
138
|
+
extern VALUE cast_sym_MOD;
|
139
|
+
extern VALUE cast_sym_LT;
|
140
|
+
extern VALUE cast_sym_GT;
|
141
|
+
extern VALUE cast_sym_XOR;
|
142
|
+
extern VALUE cast_sym_OR;
|
143
|
+
extern VALUE cast_sym_QUESTION;
|
144
|
+
#endif
|
data/ext/cast/extconf.rb
ADDED
data/ext/cast/parser.c
ADDED
@@ -0,0 +1,287 @@
|
|
1
|
+
#include "cast.h"
|
2
|
+
|
3
|
+
/* Modules and classes.
|
4
|
+
*/
|
5
|
+
VALUE cast_mC;
|
6
|
+
VALUE cast_cParser;
|
7
|
+
VALUE cast_eParseError;
|
8
|
+
|
9
|
+
/* Lexer symbols.
|
10
|
+
*/
|
11
|
+
VALUE cast_sym_AUTO;
|
12
|
+
VALUE cast_sym_BREAK;
|
13
|
+
VALUE cast_sym_CASE;
|
14
|
+
VALUE cast_sym_CHAR;
|
15
|
+
VALUE cast_sym_CONST;
|
16
|
+
VALUE cast_sym_CONTINUE;
|
17
|
+
VALUE cast_sym_DEFAULT;
|
18
|
+
VALUE cast_sym_DO;
|
19
|
+
VALUE cast_sym_DOUBLE;
|
20
|
+
VALUE cast_sym_ELSE;
|
21
|
+
VALUE cast_sym_ENUM;
|
22
|
+
VALUE cast_sym_EXTERN;
|
23
|
+
VALUE cast_sym_FLOAT;
|
24
|
+
VALUE cast_sym_FOR;
|
25
|
+
VALUE cast_sym_GOTO;
|
26
|
+
VALUE cast_sym_IF;
|
27
|
+
VALUE cast_sym_INT;
|
28
|
+
VALUE cast_sym_LONG;
|
29
|
+
VALUE cast_sym_REGISTER;
|
30
|
+
VALUE cast_sym_RETURN;
|
31
|
+
VALUE cast_sym_SHORT;
|
32
|
+
VALUE cast_sym_SIGNED;
|
33
|
+
VALUE cast_sym_SIZEOF;
|
34
|
+
VALUE cast_sym_STATIC;
|
35
|
+
VALUE cast_sym_STRUCT;
|
36
|
+
VALUE cast_sym_SWITCH;
|
37
|
+
VALUE cast_sym_TYPEDEF;
|
38
|
+
VALUE cast_sym_UNION;
|
39
|
+
VALUE cast_sym_UNSIGNED;
|
40
|
+
VALUE cast_sym_VOID;
|
41
|
+
VALUE cast_sym_VOLATILE;
|
42
|
+
VALUE cast_sym_WHILE;
|
43
|
+
VALUE cast_sym_INLINE;
|
44
|
+
VALUE cast_sym_RESTRICT;
|
45
|
+
VALUE cast_sym_BOOL;
|
46
|
+
VALUE cast_sym_COMPLEX;
|
47
|
+
VALUE cast_sym_IMAGINARY;
|
48
|
+
|
49
|
+
VALUE cast_sym_FCON;
|
50
|
+
VALUE cast_sym_ICON;
|
51
|
+
VALUE cast_sym_ID;
|
52
|
+
VALUE cast_sym_SCON;
|
53
|
+
VALUE cast_sym_CCON;
|
54
|
+
VALUE cast_sym_TYPENAME;
|
55
|
+
|
56
|
+
VALUE cast_sym_ADDEQ;
|
57
|
+
VALUE cast_sym_ANDAND;
|
58
|
+
VALUE cast_sym_ANDEQ;
|
59
|
+
VALUE cast_sym_DEC;
|
60
|
+
VALUE cast_sym_ARROW;
|
61
|
+
VALUE cast_sym_DIVEQ;
|
62
|
+
VALUE cast_sym_ELLIPSIS;
|
63
|
+
VALUE cast_sym_EQEQ;
|
64
|
+
VALUE cast_sym_GEQ;
|
65
|
+
VALUE cast_sym_INC;
|
66
|
+
VALUE cast_sym_LEQ;
|
67
|
+
VALUE cast_sym_LSHIFT;
|
68
|
+
VALUE cast_sym_LSHIFTEQ;
|
69
|
+
VALUE cast_sym_MODEQ;
|
70
|
+
VALUE cast_sym_MULEQ;
|
71
|
+
VALUE cast_sym_NEQ;
|
72
|
+
VALUE cast_sym_OREQ;
|
73
|
+
VALUE cast_sym_OROR;
|
74
|
+
VALUE cast_sym_RSHIFT;
|
75
|
+
VALUE cast_sym_RSHIFTEQ;
|
76
|
+
VALUE cast_sym_SUBEQ;
|
77
|
+
VALUE cast_sym_XOREQ;
|
78
|
+
|
79
|
+
VALUE cast_sym_SEMICOLON;
|
80
|
+
VALUE cast_sym_LBRACE;
|
81
|
+
VALUE cast_sym_RBRACE;
|
82
|
+
VALUE cast_sym_COMMA;
|
83
|
+
VALUE cast_sym_COLON;
|
84
|
+
VALUE cast_sym_EQ;
|
85
|
+
VALUE cast_sym_LPAREN;
|
86
|
+
VALUE cast_sym_RPAREN;
|
87
|
+
VALUE cast_sym_LBRACKET;
|
88
|
+
VALUE cast_sym_RBRACKET;
|
89
|
+
VALUE cast_sym_DOT;
|
90
|
+
VALUE cast_sym_AND;
|
91
|
+
VALUE cast_sym_BANG;
|
92
|
+
VALUE cast_sym_NOT;
|
93
|
+
VALUE cast_sym_SUB;
|
94
|
+
VALUE cast_sym_ADD;
|
95
|
+
VALUE cast_sym_MUL;
|
96
|
+
VALUE cast_sym_DIV;
|
97
|
+
VALUE cast_sym_MOD;
|
98
|
+
VALUE cast_sym_LT;
|
99
|
+
VALUE cast_sym_GT;
|
100
|
+
VALUE cast_sym_XOR;
|
101
|
+
VALUE cast_sym_OR;
|
102
|
+
VALUE cast_sym_QUESTION;
|
103
|
+
|
104
|
+
VALUE cast_Parser_alloc(VALUE klass) {
|
105
|
+
VALUE ret;
|
106
|
+
cast_Parser *ret_p;
|
107
|
+
ret_p = ALLOC(cast_Parser);
|
108
|
+
memset(ret_p, 0, sizeof(cast_Parser));
|
109
|
+
ret = Wrap_Struct(ret_p, Parser, klass);
|
110
|
+
ret_p->lineno = 1;
|
111
|
+
ret_p->token = rb_ary_new2(2);
|
112
|
+
rb_ary_push(ret_p->token, Qnil);
|
113
|
+
rb_ary_push(ret_p->token, Qnil);
|
114
|
+
return ret;
|
115
|
+
}
|
116
|
+
|
117
|
+
void cast_Parser_mark(cast_Parser *parser) {
|
118
|
+
rb_gc_mark(parser->token);
|
119
|
+
}
|
120
|
+
|
121
|
+
void cast_Parser_free(cast_Parser *parser) {
|
122
|
+
/* nothing to do */
|
123
|
+
}
|
124
|
+
|
125
|
+
/* (Private.) Called by #parse to prepare for lexing.
|
126
|
+
*/
|
127
|
+
VALUE cast_Parser_prepare_lexer(VALUE self, VALUE string) {
|
128
|
+
cast_Parser *self_p;
|
129
|
+
char *b, *e;
|
130
|
+
|
131
|
+
Get_Struct(self, Parser, self_p);
|
132
|
+
string = rb_convert_type(string, T_STRING, "String", "to_s");
|
133
|
+
|
134
|
+
b = RSTRING_PTR(string);
|
135
|
+
e = b + RSTRING_LEN(string) + 1;
|
136
|
+
|
137
|
+
self_p->bot = b;
|
138
|
+
self_p->tok = b;
|
139
|
+
self_p->ptr = b;
|
140
|
+
self_p->cur = b;
|
141
|
+
self_p->pos = b;
|
142
|
+
self_p->lim = e;
|
143
|
+
self_p->top = e;
|
144
|
+
self_p->eof = e;
|
145
|
+
self_p->lineno = 1;
|
146
|
+
|
147
|
+
return Qnil;
|
148
|
+
}
|
149
|
+
|
150
|
+
/* (Private.) Called by #parse to get the next token (as required by
|
151
|
+
* racc). Returns a 2-element array: [TOKEN_SYM, VALUE].
|
152
|
+
*/
|
153
|
+
VALUE cast_Parser_next_token(VALUE self) {
|
154
|
+
cast_Parser *self_p;
|
155
|
+
VALUE token, pos;
|
156
|
+
Get_Struct(self, Parser, self_p);
|
157
|
+
|
158
|
+
/* clear the token val */
|
159
|
+
rb_ary_store(self_p->token, 1, Qnil);
|
160
|
+
|
161
|
+
/* call the lexer */
|
162
|
+
yylex(self, self_p);
|
163
|
+
|
164
|
+
/* return nil if EOF */
|
165
|
+
if (rb_ary_entry(self_p->token, 0) == Qnil)
|
166
|
+
return Qnil;
|
167
|
+
|
168
|
+
/* set self.pos */
|
169
|
+
pos = rb_iv_get(self, "@pos");
|
170
|
+
rb_funcall(pos, rb_intern("line_num="), 1, LONG2NUM(self_p->lineno));
|
171
|
+
/* make token */
|
172
|
+
token = rb_funcall(rb_const_get(cast_cParser, rb_intern("Token")),
|
173
|
+
rb_intern("new"), 2,
|
174
|
+
rb_funcall2(pos, rb_intern("dup"), 0, NULL),
|
175
|
+
rb_ary_entry(self_p->token, 1));
|
176
|
+
/* put the token in the array */
|
177
|
+
rb_ary_store(self_p->token, 1, token);
|
178
|
+
return self_p->token;
|
179
|
+
}
|
180
|
+
|
181
|
+
/* Called from Init_cast_ext to initialize the Parser section.
|
182
|
+
*/
|
183
|
+
void cast_init_parser(void) {
|
184
|
+
VALUE cRaccParser;
|
185
|
+
rb_require("racc/parser");
|
186
|
+
cRaccParser = rb_const_get(rb_const_get(rb_cObject, rb_intern("Racc")),
|
187
|
+
rb_intern("Parser"));
|
188
|
+
cast_cParser = rb_define_class_under(cast_mC, "Parser", cRaccParser);
|
189
|
+
rb_define_alloc_func(cast_cParser, cast_Parser_alloc);
|
190
|
+
cast_eParseError = rb_define_class_under(cast_mC, "ParseError", rb_eStandardError);
|
191
|
+
|
192
|
+
rb_define_private_method(cast_cParser, "next_token", cast_Parser_next_token, 0);
|
193
|
+
rb_define_private_method(cast_cParser, "prepare_lexer", cast_Parser_prepare_lexer, 1);
|
194
|
+
|
195
|
+
cast_sym_AUTO = ID2SYM(rb_intern("AUTO"));
|
196
|
+
cast_sym_BREAK = ID2SYM(rb_intern("BREAK"));
|
197
|
+
cast_sym_CASE = ID2SYM(rb_intern("CASE"));
|
198
|
+
cast_sym_CHAR = ID2SYM(rb_intern("CHAR"));
|
199
|
+
cast_sym_CONST = ID2SYM(rb_intern("CONST"));
|
200
|
+
cast_sym_CONTINUE = ID2SYM(rb_intern("CONTINUE"));
|
201
|
+
cast_sym_DEFAULT = ID2SYM(rb_intern("DEFAULT"));
|
202
|
+
cast_sym_DO = ID2SYM(rb_intern("DO"));
|
203
|
+
cast_sym_DOUBLE = ID2SYM(rb_intern("DOUBLE"));
|
204
|
+
cast_sym_ELSE = ID2SYM(rb_intern("ELSE"));
|
205
|
+
cast_sym_ENUM = ID2SYM(rb_intern("ENUM"));
|
206
|
+
cast_sym_EXTERN = ID2SYM(rb_intern("EXTERN"));
|
207
|
+
cast_sym_FLOAT = ID2SYM(rb_intern("FLOAT"));
|
208
|
+
cast_sym_FOR = ID2SYM(rb_intern("FOR"));
|
209
|
+
cast_sym_GOTO = ID2SYM(rb_intern("GOTO"));
|
210
|
+
cast_sym_IF = ID2SYM(rb_intern("IF"));
|
211
|
+
cast_sym_INT = ID2SYM(rb_intern("INT"));
|
212
|
+
cast_sym_LONG = ID2SYM(rb_intern("LONG"));
|
213
|
+
cast_sym_REGISTER = ID2SYM(rb_intern("REGISTER"));
|
214
|
+
cast_sym_RETURN = ID2SYM(rb_intern("RETURN"));
|
215
|
+
cast_sym_SHORT = ID2SYM(rb_intern("SHORT"));
|
216
|
+
cast_sym_SIGNED = ID2SYM(rb_intern("SIGNED"));
|
217
|
+
cast_sym_SIZEOF = ID2SYM(rb_intern("SIZEOF"));
|
218
|
+
cast_sym_STATIC = ID2SYM(rb_intern("STATIC"));
|
219
|
+
cast_sym_STRUCT = ID2SYM(rb_intern("STRUCT"));
|
220
|
+
cast_sym_SWITCH = ID2SYM(rb_intern("SWITCH"));
|
221
|
+
cast_sym_TYPEDEF = ID2SYM(rb_intern("TYPEDEF"));
|
222
|
+
cast_sym_UNION = ID2SYM(rb_intern("UNION"));
|
223
|
+
cast_sym_UNSIGNED = ID2SYM(rb_intern("UNSIGNED"));
|
224
|
+
cast_sym_VOID = ID2SYM(rb_intern("VOID"));
|
225
|
+
cast_sym_VOLATILE = ID2SYM(rb_intern("VOLATILE"));
|
226
|
+
cast_sym_WHILE = ID2SYM(rb_intern("WHILE"));
|
227
|
+
cast_sym_INLINE = ID2SYM(rb_intern("INLINE"));
|
228
|
+
cast_sym_RESTRICT = ID2SYM(rb_intern("RESTRICT"));
|
229
|
+
cast_sym_BOOL = ID2SYM(rb_intern("BOOL"));
|
230
|
+
cast_sym_COMPLEX = ID2SYM(rb_intern("COMPLEX"));
|
231
|
+
cast_sym_IMAGINARY = ID2SYM(rb_intern("IMAGINARY"));
|
232
|
+
|
233
|
+
cast_sym_FCON = ID2SYM(rb_intern("FCON"));
|
234
|
+
cast_sym_ICON = ID2SYM(rb_intern("ICON"));
|
235
|
+
cast_sym_ID = ID2SYM(rb_intern("ID"));
|
236
|
+
cast_sym_SCON = ID2SYM(rb_intern("SCON"));
|
237
|
+
cast_sym_CCON = ID2SYM(rb_intern("CCON"));
|
238
|
+
cast_sym_TYPENAME = ID2SYM(rb_intern("TYPENAME"));
|
239
|
+
|
240
|
+
cast_sym_ADDEQ = ID2SYM(rb_intern("ADDEQ"));
|
241
|
+
cast_sym_ANDAND = ID2SYM(rb_intern("ANDAND"));
|
242
|
+
cast_sym_ANDEQ = ID2SYM(rb_intern("ANDEQ"));
|
243
|
+
cast_sym_DEC = ID2SYM(rb_intern("DEC"));
|
244
|
+
cast_sym_ARROW = ID2SYM(rb_intern("ARROW"));
|
245
|
+
cast_sym_DIVEQ = ID2SYM(rb_intern("DIVEQ"));
|
246
|
+
cast_sym_ELLIPSIS = ID2SYM(rb_intern("ELLIPSIS"));
|
247
|
+
cast_sym_EQEQ = ID2SYM(rb_intern("EQEQ"));
|
248
|
+
cast_sym_GEQ = ID2SYM(rb_intern("GEQ"));
|
249
|
+
cast_sym_INC = ID2SYM(rb_intern("INC"));
|
250
|
+
cast_sym_LEQ = ID2SYM(rb_intern("LEQ"));
|
251
|
+
cast_sym_LSHIFT = ID2SYM(rb_intern("LSHIFT"));
|
252
|
+
cast_sym_LSHIFTEQ = ID2SYM(rb_intern("LSHIFTEQ"));
|
253
|
+
cast_sym_MODEQ = ID2SYM(rb_intern("MODEQ"));
|
254
|
+
cast_sym_MULEQ = ID2SYM(rb_intern("MULEQ"));
|
255
|
+
cast_sym_NEQ = ID2SYM(rb_intern("NEQ"));
|
256
|
+
cast_sym_OREQ = ID2SYM(rb_intern("OREQ"));
|
257
|
+
cast_sym_OROR = ID2SYM(rb_intern("OROR"));
|
258
|
+
cast_sym_RSHIFT = ID2SYM(rb_intern("RSHIFT"));
|
259
|
+
cast_sym_RSHIFTEQ = ID2SYM(rb_intern("RSHIFTEQ"));
|
260
|
+
cast_sym_SUBEQ = ID2SYM(rb_intern("SUBEQ"));
|
261
|
+
cast_sym_XOREQ = ID2SYM(rb_intern("XOREQ"));
|
262
|
+
|
263
|
+
cast_sym_SEMICOLON = ID2SYM(rb_intern("SEMICOLON"));
|
264
|
+
cast_sym_LBRACE = ID2SYM(rb_intern("LBRACE"));
|
265
|
+
cast_sym_RBRACE = ID2SYM(rb_intern("RBRACE"));
|
266
|
+
cast_sym_COMMA = ID2SYM(rb_intern("COMMA"));
|
267
|
+
cast_sym_COLON = ID2SYM(rb_intern("COLON"));
|
268
|
+
cast_sym_EQ = ID2SYM(rb_intern("EQ"));
|
269
|
+
cast_sym_LPAREN = ID2SYM(rb_intern("LPAREN"));
|
270
|
+
cast_sym_RPAREN = ID2SYM(rb_intern("RPAREN"));
|
271
|
+
cast_sym_LBRACKET = ID2SYM(rb_intern("LBRACKET"));
|
272
|
+
cast_sym_RBRACKET = ID2SYM(rb_intern("RBRACKET"));
|
273
|
+
cast_sym_DOT = ID2SYM(rb_intern("DOT"));
|
274
|
+
cast_sym_AND = ID2SYM(rb_intern("AND"));
|
275
|
+
cast_sym_BANG = ID2SYM(rb_intern("BANG"));
|
276
|
+
cast_sym_NOT = ID2SYM(rb_intern("NOT"));
|
277
|
+
cast_sym_SUB = ID2SYM(rb_intern("SUB"));
|
278
|
+
cast_sym_ADD = ID2SYM(rb_intern("ADD"));
|
279
|
+
cast_sym_MUL = ID2SYM(rb_intern("MUL"));
|
280
|
+
cast_sym_DIV = ID2SYM(rb_intern("DIV"));
|
281
|
+
cast_sym_MOD = ID2SYM(rb_intern("MOD"));
|
282
|
+
cast_sym_LT = ID2SYM(rb_intern("LT"));
|
283
|
+
cast_sym_GT = ID2SYM(rb_intern("GT"));
|
284
|
+
cast_sym_XOR = ID2SYM(rb_intern("XOR"));
|
285
|
+
cast_sym_OR = ID2SYM(rb_intern("OR"));
|
286
|
+
cast_sym_QUESTION = ID2SYM(rb_intern("QUESTION"));
|
287
|
+
}
|