ruco-cpp 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +17 -0
  3. data/bin/console +14 -0
  4. data/bin/ruco +30 -0
  5. data/bin/setup +7 -0
  6. data/data/ruco/Parser.frame +359 -0
  7. data/data/ruco/Scanner.frame +896 -0
  8. data/data/ruco/picojson/Changes +14 -0
  9. data/data/ruco/picojson/LICENSE +25 -0
  10. data/data/ruco/picojson/Makefile +8 -0
  11. data/data/ruco/picojson/README.mkdn +183 -0
  12. data/data/ruco/picojson/examples/github-issues.cc +110 -0
  13. data/data/ruco/picojson/examples/iostream.cc +70 -0
  14. data/data/ruco/picojson/examples/streaming.cc +76 -0
  15. data/data/ruco/picojson/picojson.h +1299 -0
  16. data/ext/cocor/Action.cpp +81 -0
  17. data/ext/cocor/Action.h +59 -0
  18. data/ext/cocor/ArrayList.cpp +79 -0
  19. data/ext/cocor/ArrayList.h +52 -0
  20. data/ext/cocor/BitArray.cpp +156 -0
  21. data/ext/cocor/BitArray.h +68 -0
  22. data/ext/cocor/CharClass.cpp +42 -0
  23. data/ext/cocor/CharClass.h +48 -0
  24. data/ext/cocor/CharSet.cpp +166 -0
  25. data/ext/cocor/CharSet.h +68 -0
  26. data/ext/cocor/Coco.atg +528 -0
  27. data/ext/cocor/Coco.cpp +173 -0
  28. data/ext/cocor/Comment.cpp +45 -0
  29. data/ext/cocor/Comment.h +51 -0
  30. data/ext/cocor/Copyright.frame +27 -0
  31. data/ext/cocor/DFA.cpp +865 -0
  32. data/ext/cocor/DFA.h +132 -0
  33. data/ext/cocor/Generator.cpp +182 -0
  34. data/ext/cocor/Generator.h +61 -0
  35. data/ext/cocor/Graph.h +59 -0
  36. data/ext/cocor/HashTable.cpp +115 -0
  37. data/ext/cocor/HashTable.h +84 -0
  38. data/ext/cocor/Makefile +11 -0
  39. data/ext/cocor/Melted.cpp +39 -0
  40. data/ext/cocor/Melted.h +51 -0
  41. data/ext/cocor/Node.cpp +69 -0
  42. data/ext/cocor/Node.h +86 -0
  43. data/ext/cocor/Parser.cpp +925 -0
  44. data/ext/cocor/Parser.frame +326 -0
  45. data/ext/cocor/Parser.h +153 -0
  46. data/ext/cocor/ParserGen.cpp +486 -0
  47. data/ext/cocor/ParserGen.h +99 -0
  48. data/ext/cocor/Position.cpp +37 -0
  49. data/ext/cocor/Position.h +46 -0
  50. data/ext/cocor/README.md +12 -0
  51. data/ext/cocor/Scanner.cpp +833 -0
  52. data/ext/cocor/Scanner.frame +897 -0
  53. data/ext/cocor/Scanner.h +291 -0
  54. data/ext/cocor/Sets.h +84 -0
  55. data/ext/cocor/SortedList.cpp +141 -0
  56. data/ext/cocor/SortedList.h +68 -0
  57. data/ext/cocor/State.cpp +77 -0
  58. data/ext/cocor/State.h +55 -0
  59. data/ext/cocor/StringBuilder.cpp +88 -0
  60. data/ext/cocor/StringBuilder.h +29 -0
  61. data/ext/cocor/Symbol.cpp +61 -0
  62. data/ext/cocor/Symbol.h +70 -0
  63. data/ext/cocor/Tab.cpp +1248 -0
  64. data/ext/cocor/Tab.h +245 -0
  65. data/ext/cocor/Target.cpp +41 -0
  66. data/ext/cocor/Target.h +48 -0
  67. data/ext/cocor/build.bat +3 -0
  68. data/ext/cocor/build.sh +4 -0
  69. data/ext/cocor/coc.bat +1 -0
  70. data/ext/cocor/coc.sh +2 -0
  71. data/ext/cocor/cocor_ruby_ext.cpp +124 -0
  72. data/ext/cocor/cygBuild.bat +1 -0
  73. data/ext/cocor/extconf.rb +5 -0
  74. data/ext/cocor/mingwbuild.bat +2 -0
  75. data/ext/cocor/mkmf.log +57 -0
  76. data/ext/cocor/zipsources.bat +1 -0
  77. data/lib/cocor.rb +14 -0
  78. data/lib/ruco/version.rb +3 -0
  79. data/lib/ruco.rb +728 -0
  80. metadata +195 -0
data/ext/cocor/Tab.h ADDED
@@ -0,0 +1,245 @@
1
+ /*-------------------------------------------------------------------------
2
+ Tab -- Symbol Table Management
3
+ Compiler Generator Coco/R,
4
+ Copyright (c) 1990, 2004 Hanspeter Moessenboeck, University of Linz
5
+ extended by M. Loeberbauer & A. Woess, Univ. of Linz
6
+ ported to C++ by Csaba Balazs, University of Szeged
7
+ with improvements by Pat Terry, Rhodes University
8
+
9
+ This program is free software; you can redistribute it and/or modify it
10
+ under the terms of the GNU General Public License as published by the
11
+ Free Software Foundation; either version 2, or (at your option) any
12
+ later version.
13
+
14
+ This program is distributed in the hope that it will be useful, but
15
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17
+ for more details.
18
+
19
+ You should have received a copy of the GNU General Public License along
20
+ with this program; if not, write to the Free Software Foundation, Inc.,
21
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
+
23
+ As an exception, it is allowed to write an extension of Coco/R that is
24
+ used as a plugin in non-free software.
25
+
26
+ If not otherwise stated, any source code generated by Coco/R (other than
27
+ Coco/R itself) does not fall under the GNU General Public License.
28
+ -------------------------------------------------------------------------*/
29
+
30
+ #if !defined(COCO_TAB_H__)
31
+ #define COCO_TAB_H__
32
+
33
+ #include "ArrayList.h"
34
+ #include "HashTable.h"
35
+ #include "StringBuilder.h"
36
+ #include "SortedList.h"
37
+ #include "Scanner.h"
38
+ #include "Position.h"
39
+ #include "Symbol.h"
40
+ #include "Node.h"
41
+ #include "Graph.h"
42
+ #include "Sets.h"
43
+ #include "CharClass.h"
44
+
45
+ namespace Coco {
46
+
47
+ class Errors;
48
+ class Parser;
49
+ class BitArray;
50
+
51
+ class Tab {
52
+ public:
53
+ Position *semDeclPos; // position of global semantic declarations
54
+ CharSet *ignored; // characters ignored by the scanner
55
+ bool ddt[10]; // debug and test switches
56
+ Symbol *gramSy; // root nonterminal; filled by ATG
57
+ Symbol *eofSy; // end of file symbol
58
+ Symbol *noSym; // used in case of an error
59
+ BitArray *allSyncSets; // union of all synchronisation sets
60
+ HashTable *literals; // symbols that are used as literals
61
+
62
+ wchar_t* srcName; // name of the atg file (including path)
63
+ wchar_t* srcDir; // directory path of the atg file
64
+ wchar_t* nsName; // namespace for generated files
65
+ wchar_t* frameDir; // directory containing the frame files
66
+ wchar_t* outDir; // directory for generated files
67
+ bool checkEOF; // should coco generate a check for EOF at
68
+ // the end of Parser.Parse():
69
+ bool emitLines; // emit line directives in generated parser
70
+
71
+ BitArray *visited; // mark list for graph traversals
72
+ Symbol *curSy; // current symbol in computation of sets
73
+
74
+ Parser *parser; // other Coco objects
75
+ FILE* trace;
76
+
77
+ Errors *errors;
78
+
79
+ ArrayList *terminals;
80
+ ArrayList *pragmas;
81
+ ArrayList *nonterminals;
82
+
83
+
84
+ ArrayList *nodes;
85
+ static const char* nTyp[];
86
+ Node *dummyNode;
87
+
88
+ ArrayList *classes;
89
+ int dummyName;
90
+
91
+
92
+ Tab(Parser *parser);
93
+
94
+ //---------------------------------------------------------------------
95
+ // Symbol list management
96
+ //---------------------------------------------------------------------
97
+
98
+
99
+ static const char* tKind[];
100
+
101
+ Symbol* NewSym(int typ, const wchar_t* name, int line);
102
+ Symbol* FindSym(const wchar_t* name);
103
+ int Num(Node *p);
104
+ void PrintSym(Symbol *sym);
105
+ void PrintSymbolTable();
106
+ void PrintSet(BitArray *s, int indent);
107
+
108
+ //---------------------------------------------------------------------
109
+ // Syntax graph management
110
+ //---------------------------------------------------------------------
111
+
112
+ Node* NewNode(int typ, Symbol *sym, int line);
113
+ Node* NewNode(int typ, Node* sub);
114
+ Node* NewNode(int typ, int val, int line);
115
+ void MakeFirstAlt(Graph *g);
116
+ void MakeAlternative(Graph *g1, Graph *g2);
117
+ void MakeSequence(Graph *g1, Graph *g2);
118
+ void MakeIteration(Graph *g);
119
+ void MakeOption(Graph *g);
120
+ void Finish(Graph *g);
121
+ void DeleteNodes();
122
+ Graph* StrToGraph(const wchar_t* str);
123
+ void SetContextTrans(Node *p); // set transition code in the graph rooted at p
124
+
125
+ //------------ graph deletability check -----------------
126
+
127
+ bool DelGraph(Node* p);
128
+ bool DelSubGraph(Node* p);
129
+ bool DelNode(Node* p);
130
+
131
+ //----------------- graph printing ----------------------
132
+
133
+ int Ptr(Node *p, bool up);
134
+ wchar_t* Pos(Position *pos);
135
+ wchar_t* Name(const wchar_t* name);
136
+ void PrintNodes();
137
+
138
+ //---------------------------------------------------------------------
139
+ // Character class management
140
+ //---------------------------------------------------------------------
141
+
142
+ CharClass* NewCharClass(const wchar_t* name, CharSet *s);
143
+ CharClass* FindCharClass(const wchar_t* name);
144
+ CharClass* FindCharClass(CharSet *s);
145
+ CharSet* CharClassSet(int i);
146
+
147
+ //----------- character class printing
148
+
149
+ wchar_t* Ch(const wchar_t ch);
150
+ void WriteCharSet(CharSet *s);
151
+ void WriteCharClasses ();
152
+
153
+ //---------------------------------------------------------------------
154
+ // Symbol set computations
155
+ //---------------------------------------------------------------------
156
+
157
+ /* Computes the first set for the given Node. */
158
+ BitArray* First0(Node *p, BitArray *mark);
159
+ BitArray* First(Node *p);
160
+ void CompFirstSets();
161
+ void CompFollow(Node *p);
162
+ void Complete(Symbol *sym);
163
+ void CompFollowSets();
164
+ Node* LeadingAny(Node *p);
165
+ void FindAS(Node *p); // find ANY sets
166
+ void CompAnySets();
167
+ BitArray* Expected(Node *p, Symbol *curSy);
168
+ // does not look behind resolvers; only called during LL(1) test and in CheckRes
169
+ BitArray* Expected0(Node *p, Symbol *curSy);
170
+ void CompSync(Node *p);
171
+ void CompSyncSets();
172
+ void SetupAnys();
173
+ void CompDeletableSymbols();
174
+ void RenumberPragmas();
175
+ void CompSymbolSets();
176
+
177
+ //---------------------------------------------------------------------
178
+ // String handling
179
+ //---------------------------------------------------------------------
180
+
181
+ wchar_t Hex2Char(const wchar_t* s);
182
+ wchar_t* Char2Hex(const wchar_t ch);
183
+ wchar_t* Unescape(const wchar_t* s);
184
+ wchar_t* Escape(const wchar_t* s);
185
+
186
+ //---------------------------------------------------------------------
187
+ // Grammar checks
188
+ //---------------------------------------------------------------------
189
+
190
+ bool GrammarOk();
191
+
192
+ //--------------- check for circular productions ----------------------
193
+
194
+ class CNode { // node of list for finding circular productions
195
+ public:
196
+ Symbol *left, *right;
197
+
198
+ CNode (Symbol *l, Symbol *r) {
199
+ left = l; right = r;
200
+ }
201
+ };
202
+
203
+ void GetSingles(Node *p, ArrayList *singles);
204
+ bool NoCircularProductions();
205
+
206
+ //--------------- check for LL(1) errors ----------------------
207
+
208
+ void LL1Error(int cond, Symbol *sym);
209
+ void CheckOverlap(BitArray *s1, BitArray *s2, int cond);
210
+ void CheckAlts(Node *p);
211
+ void CheckLL1();
212
+
213
+ //------------- check if resolvers are legal --------------------
214
+
215
+ void ResErr(Node *p, const wchar_t* msg);
216
+ void CheckRes(Node *p, bool rslvAllowed);
217
+ void CheckResolvers();
218
+
219
+ //------------- check if every nts has a production --------------------
220
+
221
+ bool NtsComplete();
222
+
223
+ //-------------- check if every nts can be reached -----------------
224
+
225
+ void MarkReachedNts(Node *p);
226
+ bool AllNtReached();
227
+
228
+ //--------- check if every nts can be derived to terminals ------------
229
+
230
+ bool IsTerm(Node *p, BitArray *mark); // true if graph can be derived to terminals
231
+ bool AllNtToTerm();
232
+
233
+ //---------------------------------------------------------------------
234
+ // Cross reference list
235
+ //---------------------------------------------------------------------
236
+
237
+ void XRef();
238
+ void SetDDT(const wchar_t* s);
239
+ void SetOption(const wchar_t* s);
240
+
241
+ };
242
+
243
+ }; // namespace
244
+
245
+ #endif // !defined(COCO_TAB_H__)
@@ -0,0 +1,41 @@
1
+ /*-------------------------------------------------------------------------
2
+ Compiler Generator Coco/R,
3
+ Copyright (c) 1990, 2004 Hanspeter Moessenboeck, University of Linz
4
+ extended by M. Loeberbauer & A. Woess, Univ. of Linz
5
+ ported to C++ by Csaba Balazs, University of Szeged
6
+ with improvements by Pat Terry, Rhodes University
7
+
8
+ This program is free software; you can redistribute it and/or modify it
9
+ under the terms of the GNU General Public License as published by the
10
+ Free Software Foundation; either version 2, or (at your option) any
11
+ later version.
12
+
13
+ This program is distributed in the hope that it will be useful, but
14
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16
+ for more details.
17
+
18
+ You should have received a copy of the GNU General Public License along
19
+ with this program; if not, write to the Free Software Foundation, Inc.,
20
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
+
22
+ As an exception, it is allowed to write an extension of Coco/R that is
23
+ used as a plugin in non-free software.
24
+
25
+ If not otherwise stated, any source code generated by Coco/R (other than
26
+ Coco/R itself) does not fall under the GNU General Public License.
27
+ -------------------------------------------------------------------------*/
28
+
29
+ #include <stdio.h>
30
+ #include "Target.h"
31
+ #include "State.h"
32
+
33
+ namespace Coco {
34
+
35
+ Target::Target(State *s) {
36
+ next = NULL;
37
+
38
+ state = s;
39
+ }
40
+
41
+ }; // namespace
@@ -0,0 +1,48 @@
1
+ /*-------------------------------------------------------------------------
2
+ Compiler Generator Coco/R,
3
+ Copyright (c) 1990, 2004 Hanspeter Moessenboeck, University of Linz
4
+ extended by M. Loeberbauer & A. Woess, Univ. of Linz
5
+ ported to C++ by Csaba Balazs, University of Szeged
6
+ with improvements by Pat Terry, Rhodes University
7
+
8
+ This program is free software; you can redistribute it and/or modify it
9
+ under the terms of the GNU General Public License as published by the
10
+ Free Software Foundation; either version 2, or (at your option) any
11
+ later version.
12
+
13
+ This program is distributed in the hope that it will be useful, but
14
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16
+ for more details.
17
+
18
+ You should have received a copy of the GNU General Public License along
19
+ with this program; if not, write to the Free Software Foundation, Inc.,
20
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
+
22
+ As an exception, it is allowed to write an extension of Coco/R that is
23
+ used as a plugin in non-free software.
24
+
25
+ If not otherwise stated, any source code generated by Coco/R (other than
26
+ Coco/R itself) does not fall under the GNU General Public License.
27
+ -------------------------------------------------------------------------*/
28
+
29
+ #if !defined(COCO_TARGET_H__)
30
+ #define COCO_TARGET_H__
31
+
32
+ namespace Coco {
33
+
34
+ class State;
35
+
36
+ class Target // set of states that are reached by an action
37
+ {
38
+ public:
39
+ Target (State *s);
40
+
41
+ State *state; // target state
42
+ Target *next;
43
+
44
+ };
45
+
46
+ }; // namespace
47
+
48
+ #endif // !defined(COCO_TARGET_H__)
@@ -0,0 +1,3 @@
1
+ cl *.cpp -FeCoco.exe /O2 /wd4996
2
+
3
+ del *.obj
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ g++ *.cpp -o Coco -g -Wall
4
+
data/ext/cocor/coc.bat ADDED
@@ -0,0 +1 @@
1
+ coco Coco.ATG -namespace Coco
data/ext/cocor/coc.sh ADDED
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ ./Coco Coco.atg -namespace Coco
@@ -0,0 +1,124 @@
1
+ #include <ruby.h>
2
+ #include <iostream>
3
+ #include <stdio.h>
4
+
5
+ #include "Scanner.h"
6
+ #include "Parser.h"
7
+ #include "Tab.h"
8
+
9
+ using namespace Coco;
10
+
11
+ // --------------
12
+ // UTILITIES
13
+ // --------------
14
+
15
+ std::wstring RSTRING_PTR_WIDE(VALUE rubyString)
16
+ {
17
+ std::wstring wc( RSTRING_LEN(rubyString), L'#' );
18
+ mbstowcs( &wc[0], RSTRING_PTR(rubyString), RSTRING_LEN(rubyString) );
19
+ return wc;
20
+ }
21
+
22
+ VALUE rb_str_new_wide(std::wstring str)
23
+ {
24
+ std::string s( str.begin(), str.end() );
25
+ return rb_str_new(s.c_str(), s.length());
26
+ }
27
+
28
+ // --------------
29
+ // METHODS
30
+ // --------------
31
+
32
+ VALUE method_test(VALUE rubySelf, VALUE rubyString)
33
+ {
34
+ std::wstring s(RSTRING_PTR_WIDE(rubyString));
35
+ s = L"test-" + s;
36
+
37
+ return rb_str_new_wide(s);
38
+ }
39
+
40
+ VALUE method_compile(VALUE rubySelf, VALUE rubySrcName, VALUE rubyFramedir, VALUE rubyNsName, VALUE rubyOutDir)
41
+ {
42
+ std::wstring srcNameW = RSTRING_PTR_WIDE(rubySrcName);
43
+ std::wstring nsNameW = RSTRING_PTR_WIDE(rubyNsName);
44
+ std::wstring frameDirW = RSTRING_PTR_WIDE(rubyFramedir);
45
+ std::wstring outDirW = RSTRING_PTR_WIDE(rubyOutDir);
46
+
47
+ const wchar_t *srcName = srcNameW.c_str(),
48
+ *nsName = nsNameW.c_str(),
49
+ *frameDir = frameDirW.c_str(),
50
+ *outDir = outDirW.c_str(),
51
+ *ddtString = NULL,
52
+ *traceFileName = NULL;
53
+
54
+ char *chTrFileName = NULL;
55
+ bool emitLines = false;
56
+
57
+ // basically copy pasta from Coco.cpp
58
+
59
+ int pos = coco_string_lastindexof(srcName, '/');
60
+ if (pos < 0) pos = coco_string_lastindexof(srcName, '\\');
61
+ wchar_t* file = coco_string_create(srcName);
62
+ wchar_t* srcDir = coco_string_create(srcName, 0, pos+1);
63
+
64
+ Coco::Scanner *scanner = new Coco::Scanner(file);
65
+ Coco::Parser *parser = new Coco::Parser(scanner);
66
+
67
+ traceFileName = coco_string_create_append(srcDir, L"trace.txt");
68
+ chTrFileName = coco_string_create_char(traceFileName);
69
+
70
+ if ((parser->trace = fopen(chTrFileName, "w")) == NULL) {
71
+ wprintf(L"-- could not open %hs\n", chTrFileName);
72
+ exit(1);
73
+ }
74
+
75
+ parser->tab = new Coco::Tab(parser);
76
+ parser->dfa = new Coco::DFA(parser);
77
+ parser->pgen = new Coco::ParserGen(parser);
78
+
79
+ parser->tab->srcName = coco_string_create(srcName);
80
+ parser->tab->srcDir = coco_string_create(srcDir);
81
+ parser->tab->nsName = nsName ? coco_string_create(nsName) : NULL;
82
+ parser->tab->frameDir = coco_string_create(frameDir);
83
+ parser->tab->outDir = coco_string_create(outDir != NULL ? outDir : srcDir);
84
+ parser->tab->emitLines = emitLines;
85
+
86
+ if (ddtString != NULL) parser->tab->SetDDT(ddtString);
87
+
88
+ parser->Parse();
89
+
90
+ fclose(parser->trace);
91
+
92
+ // obtain the FileSize
93
+ parser->trace = fopen(chTrFileName, "r");
94
+ fseek(parser->trace, 0, SEEK_END);
95
+ long fileSize = ftell(parser->trace);
96
+ fclose(parser->trace);
97
+ if (fileSize == 0) {
98
+ remove(chTrFileName);
99
+ } else {
100
+ wprintf(L"trace output is in %hs\n", chTrFileName);
101
+ }
102
+
103
+ wprintf(L"%d errors detected\n", parser->errors->count);
104
+ if (parser->errors->count != 0) {
105
+ exit(1);
106
+ }
107
+
108
+ delete parser->pgen;
109
+ delete parser->dfa;
110
+ delete parser->tab;
111
+ delete parser;
112
+ delete scanner;
113
+ coco_string_delete(file);
114
+ coco_string_delete(srcDir);
115
+
116
+ return Qnil;
117
+ }
118
+
119
+ extern "C" void Init_cocor()
120
+ {
121
+ VALUE cocor = rb_define_module("Cocor");
122
+ rb_define_method(cocor, "cocor_test", (VALUE(*)(ANYARGS))method_test,1);
123
+ rb_define_method(cocor, "cocor_compile", (VALUE(*)(ANYARGS))method_compile,4);
124
+ }
@@ -0,0 +1 @@
1
+ g++ *.cpp -o Coco.exe
@@ -0,0 +1,5 @@
1
+ require "mkmf"
2
+
3
+ have_library( 'stdc++' );
4
+ $CFLAGS << " -Wall"
5
+ create_makefile( 'cocor/cocor' );
@@ -0,0 +1,2 @@
1
+ C:\MinGW\bin\g++ *.cpp -o Coco.exe
2
+
@@ -0,0 +1,57 @@
1
+ have_library: checking for main() in -lstdc++... -------------------- yes
2
+
3
+ "gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-darwin11.2.0 -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/opt/chef/embedded/include -I/opt/chef/embedded/include -I/opt/chef/embedded/include/ncurses -arch x86_64 -O3 -g -pipe -Qunused-arguments -fno-common conftest.c -L. -L/opt/chef/embedded/lib -L/opt/chef/embedded/lib -L. -L/opt/chef/embedded/lib -arch x86_64 -L/opt/chef/embedded/lib -m64 -lruby.1.9.1 -lpthread -ldl -lobjc "
4
+ checked program was:
5
+ /* begin */
6
+ 1: #include "ruby.h"
7
+ 2:
8
+ 3: int main(int argc, char **argv)
9
+ 4: {
10
+ 5: return 0;
11
+ 6: }
12
+ /* end */
13
+
14
+ "gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-darwin11.2.0 -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/opt/chef/embedded/include -I/opt/chef/embedded/include -I/opt/chef/embedded/include/ncurses -arch x86_64 -O3 -g -pipe -Qunused-arguments -fno-common conftest.c -L. -L/opt/chef/embedded/lib -L/opt/chef/embedded/lib -L. -L/opt/chef/embedded/lib -arch x86_64 -L/opt/chef/embedded/lib -m64 -lruby.1.9.1 -lstdc++ -lpthread -ldl -lobjc "
15
+ conftest.c:4:53: error: use of undeclared identifier 'main'
16
+ int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; }
17
+ ^
18
+ 1 error generated.
19
+ checked program was:
20
+ /* begin */
21
+ 1: #include "ruby.h"
22
+ 2:
23
+ 3: /*top*/
24
+ 4: int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; }
25
+ 5: int main(int argc, char **argv)
26
+ 6: {
27
+ 7: if (argc > 1000000) {
28
+ 8: printf("%p", &t);
29
+ 9: }
30
+ 10:
31
+ 11: return 0;
32
+ 12: }
33
+ /* end */
34
+
35
+ "gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-darwin11.2.0 -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/opt/chef/embedded/include -I/opt/chef/embedded/include -I/opt/chef/embedded/include/ncurses -arch x86_64 -O3 -g -pipe -Qunused-arguments -fno-common conftest.c -L. -L/opt/chef/embedded/lib -L/opt/chef/embedded/lib -L. -L/opt/chef/embedded/lib -arch x86_64 -L/opt/chef/embedded/lib -m64 -lruby.1.9.1 -lstdc++ -lpthread -ldl -lobjc "
36
+ conftest.c:4:11: warning: implicit declaration of function 'main' is invalid in C99 [-Wimplicit-function-declaration]
37
+ int t() { main(); return 0; }
38
+ ^
39
+ 1 warning generated.
40
+ checked program was:
41
+ /* begin */
42
+ 1: #include "ruby.h"
43
+ 2:
44
+ 3: /*top*/
45
+ 4: int t() { main(); return 0; }
46
+ 5: int main(int argc, char **argv)
47
+ 6: {
48
+ 7: if (argc > 1000000) {
49
+ 8: printf("%p", &t);
50
+ 9: }
51
+ 10:
52
+ 11: return 0;
53
+ 12: }
54
+ /* end */
55
+
56
+ --------------------
57
+
@@ -0,0 +1 @@
1
+ jar -cfM CocoSourcesCPP.zip *.atg *.frame *.bat *.h *.cpp *.sh Makefile
data/lib/cocor.rb ADDED
@@ -0,0 +1,14 @@
1
+ require "cocor/cocor"
2
+
3
+ include Cocor
4
+ module Cocor
5
+
6
+ def Cocor.runtest(hello)
7
+ cocor_test(hello)
8
+ end
9
+
10
+ def Cocor.compile(srcName, frameDir, nsName, outDir)
11
+ cocor_compile(srcName, frameDir, nsName, outDir)
12
+ end
13
+
14
+ end
@@ -0,0 +1,3 @@
1
+ module Ruco
2
+ VERSION = "0.2.1"
3
+ end