ruco-cpp 0.2.1

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.
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