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
@@ -0,0 +1,81 @@
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 "Action.h"
30
+ #include "Target.h"
31
+ #include "CharSet.h"
32
+
33
+ namespace Coco {
34
+
35
+ Action::Action(int typ, int sym, int tc) {
36
+ this->target = NULL;
37
+ this->next = NULL;
38
+
39
+ this->typ = typ; this->sym = sym; this->tc = tc;
40
+ }
41
+
42
+ void Action::AddTarget(Target *t) { // add t to the action.targets
43
+ Target *last = NULL;
44
+ Target *p = target;
45
+ while (p != NULL && t->state->nr >= p->state->nr) {
46
+ if (t->state == p->state) return;
47
+ last = p; p = p->next;
48
+ }
49
+ t->next = p;
50
+ if (p == target) target = t; else last->next = t;
51
+ }
52
+
53
+ void Action::AddTargets(Action *a) {// add copy of a.targets to action.targets
54
+ for (Target *p = a->target; p != NULL; p = p->next) {
55
+ Target *t = new Target(p->state);
56
+ AddTarget(t);
57
+ }
58
+ if (a->tc == Node::contextTrans) tc = Node::contextTrans;
59
+ }
60
+
61
+ CharSet* Action::Symbols(Tab *tab) {
62
+ CharSet *s;
63
+ if (typ == Node::clas)
64
+ s = tab->CharClassSet(sym)->Clone();
65
+ else {
66
+ s = new CharSet(); s->Set(sym);
67
+ }
68
+ return s;
69
+ }
70
+
71
+ void Action::ShiftWith(CharSet *s, Tab *tab) {
72
+ if (s->Elements() == 1) {
73
+ typ = Node::chr; sym = s->First();
74
+ } else {
75
+ CharClass *c = tab->FindCharClass(s);
76
+ if (c == NULL) c = tab->NewCharClass(L"#", s); // class with dummy name
77
+ typ = Node::clas; sym = c->n;
78
+ }
79
+ }
80
+
81
+ }; // namespace
@@ -0,0 +1,59 @@
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_ACTION_H__)
30
+ #define COCO_ACTION_H__
31
+
32
+ #include "State.h"
33
+ #include "Tab.h"
34
+
35
+ namespace Coco {
36
+
37
+ class Target;
38
+ class CharSet;
39
+
40
+ class Action // action of finite automaton
41
+ {
42
+ public:
43
+ int typ; // type of action symbol: clas, chr
44
+ int sym; // action symbol
45
+ int tc; // transition code: normalTrans, contextTrans
46
+ Target *target; // states reached from this action
47
+ Action *next;
48
+
49
+ Action(int typ, int sym, int tc);
50
+ void AddTarget(Target *t); // add t to the action.targets
51
+ void AddTargets(Action *a); // add copy of a.targets to action.targets
52
+ CharSet* Symbols(Tab *tab);
53
+ void ShiftWith(CharSet *s, Tab *tab);
54
+ };
55
+
56
+ }; // namespace
57
+
58
+
59
+ #endif // !defined(COCO_ACTION_H__)
@@ -0,0 +1,79 @@
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 "ArrayList.h"
31
+
32
+ namespace Coco {
33
+
34
+ ArrayList::ArrayList() {
35
+ Count = 0;
36
+ Capacity = 10;
37
+ Data = new void*[ Capacity ];
38
+ }
39
+
40
+ ArrayList::~ArrayList() {
41
+ delete [] Data;
42
+ }
43
+
44
+ void ArrayList::Add(void *value) {
45
+ if (Count < Capacity) {
46
+ Data[Count] = value;
47
+ Count++;
48
+ } else {
49
+ Capacity *= 2;
50
+ void** newData = new void*[Capacity];
51
+ for (int i=0; i<Count; i++) {
52
+ newData[i] = Data[i]; // copy
53
+ }
54
+ newData[Count] = value;
55
+ Count++;
56
+ delete [] Data;
57
+ Data = newData;
58
+ }
59
+ }
60
+
61
+ void ArrayList::Remove(void *value) {
62
+ for (int i=0; i<Count; i++) {
63
+ if (Data[i] == value) {
64
+ for (int j=i+1; j<Count; j++)
65
+ Data[j-1] = Data[j];
66
+ Count--;
67
+ break;
68
+ }
69
+ }
70
+ }
71
+
72
+ void* ArrayList::operator[]( int index )
73
+ {
74
+ if (0<=index && index<Count)
75
+ return Data[index];
76
+ return NULL;
77
+ }
78
+
79
+ }; // namespace
@@ -0,0 +1,52 @@
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_ARRAYLIST_H__)
30
+ #define COCO_ARRAYLIST_H__
31
+
32
+ namespace Coco {
33
+
34
+ class ArrayList
35
+ {
36
+ public:
37
+ ArrayList();
38
+ virtual ~ArrayList();
39
+
40
+ void Add(void *value);
41
+ void Remove(void *value);
42
+ void* operator[](int index);
43
+
44
+ int Count;
45
+ int Capacity;
46
+ private:
47
+ void** Data;
48
+ };
49
+
50
+ }; // namespace
51
+
52
+ #endif // !defined(COCO_ARRAYLIST_H__)
@@ -0,0 +1,156 @@
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 <memory.h>
30
+ #include <stdio.h>
31
+ #include "BitArray.h"
32
+
33
+ namespace Coco {
34
+
35
+ BitArray::BitArray(const int length, const bool defaultValue)
36
+ {
37
+ Count = length;
38
+ Data = new unsigned char[ (length+7)>>3 ];
39
+ if (defaultValue)
40
+ memset(Data, 0xFF, (length+7)>>3);
41
+ else
42
+ memset(Data, 0x00, (length+7)>>3);
43
+ }
44
+
45
+ BitArray::BitArray(const BitArray &copy) {
46
+ Count = copy.Count;
47
+ Data = new unsigned char[ (copy.Count+7)>>3 ];
48
+ memcpy(Data, copy.Data, (copy.Count+7)>>3);
49
+ }
50
+
51
+ BitArray::~BitArray()
52
+ {
53
+ delete [] Data;
54
+ Data = NULL;
55
+ }
56
+
57
+ int BitArray::getCount() {
58
+ return Count;
59
+ }
60
+
61
+ bool BitArray::Get(const int index) const
62
+ {
63
+ return (Data[(index>>3)] & (1<<(index&7))) != 0;
64
+ }
65
+
66
+ void BitArray::Set(const int index, const bool value)
67
+ {
68
+ if (value){
69
+ Data[(index>>3)] |= (1 << (index&7));
70
+ } else {
71
+ unsigned char mask = 0xFF;
72
+ mask ^= (1 << (index&7));
73
+ Data[(index>>3)] &= mask;
74
+ }
75
+ }
76
+
77
+ void BitArray::SetAll(const bool value)
78
+ {
79
+ if (value)
80
+ memset(Data, 0xFF, (Count+7)>>3);
81
+ else
82
+ memset(Data, 0x00, (Count+7)>>3);
83
+ }
84
+
85
+
86
+ void BitArray::Not()
87
+ {
88
+ for (int i=0; i<(Count+7)>>3; i++) {
89
+ Data[i] ^= 0xFF;
90
+ }
91
+ }
92
+
93
+ void BitArray::And(const BitArray *value)
94
+ {
95
+ for (int i=0; (i<(Count+7)>>3) && (i<(value->Count+7)>>3); i++) {
96
+ Data[i] = (Data[i] & value->Data[i]);
97
+ }
98
+ }
99
+
100
+ void BitArray::Or(const BitArray *value)
101
+ {
102
+ for (int i=0; (i<(Count+7)>>3) && (i<(value->Count+7)>>3); i++) {
103
+ Data[i] = (Data[i] | value->Data[i]);
104
+ }
105
+ }
106
+
107
+ void BitArray::Xor(const BitArray *value)
108
+ {
109
+ for (int i=0; (i<(Count+7)>>3) && (i<(value->Count+7)>>3); i++) {
110
+ Data[i] = (Data[i] ^ value->Data[i]);
111
+ }
112
+ }
113
+
114
+ BitArray* BitArray::Clone() const
115
+ {
116
+ BitArray *newBitArray = new BitArray(Count);
117
+ newBitArray->Count = Count;
118
+ memcpy(newBitArray->Data, Data, (Count+7)>>3);
119
+ return newBitArray;
120
+ }
121
+
122
+ bool BitArray::Equal(const BitArray *right) const
123
+ {
124
+ if (Count != right->Count) {
125
+ return false;
126
+ }
127
+ for(int index = 0; index < Count; index++) {
128
+ if (Get(index) != right->Get(index)) {
129
+ return false;
130
+ }
131
+ }
132
+ return true;
133
+ }
134
+
135
+ bool BitArray::Overlaps(const BitArray *right) const
136
+ {
137
+ for (int index = 0; index < Count; ++index) {
138
+ if (Get(index) && right->Get(index)) {
139
+ return true;
140
+ }
141
+ }
142
+ return false;
143
+ }
144
+
145
+ const BitArray &BitArray::operator=(const BitArray &right)
146
+ {
147
+ if ( &right != this ) { // avoid self assignment
148
+ delete [] Data; // prevents memory leak
149
+ Count = right.Count;
150
+ Data = new unsigned char[ (Count+7)>>3 ];
151
+ memcpy(Data, right.Data, (Count+7)>>3);
152
+ }
153
+ return *this; // enables cascaded assignments
154
+ }
155
+
156
+ } // namespace
@@ -0,0 +1,68 @@
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_BITARRAY_H__)
30
+ #define COCO_BITARRAY_H__
31
+
32
+ namespace Coco {
33
+
34
+ class BitArray
35
+ {
36
+ public:
37
+ BitArray(int length = 0, bool defaultValue = false) ;
38
+ BitArray(const BitArray &copy );
39
+ virtual ~BitArray();
40
+
41
+ int getCount();
42
+
43
+ bool Get(const int index) const;
44
+ void Set(const int index, const bool value);
45
+ void SetAll(const bool value);
46
+ bool Equal(const BitArray *right ) const;
47
+ bool Overlaps(const BitArray *right ) const;
48
+ bool operator[](const int index) const { return Get(index); };
49
+
50
+ const BitArray &operator=(const BitArray &right);
51
+
52
+ void Not();
53
+ void And(const BitArray *value);
54
+ void Or(const BitArray *value);
55
+ void Xor(const BitArray *value);
56
+
57
+ BitArray* Clone() const;
58
+
59
+ private:
60
+ int Count;
61
+ unsigned char* Data;
62
+ void setMem(int length, bool value);
63
+
64
+ };
65
+
66
+ }
67
+
68
+ #endif // !defined(COCO_BITARRAY_H__)
@@ -0,0 +1,42 @@
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 "CharClass.h"
30
+ #include "Scanner.h"
31
+
32
+ namespace Coco {
33
+
34
+ CharClass::CharClass(const wchar_t* name, CharSet *s) {
35
+ this->name = coco_string_create(name); this->set = s;
36
+ }
37
+
38
+ CharClass::~CharClass() {
39
+ coco_string_delete(name);
40
+ }
41
+
42
+ }; // 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_CHARCLASS_H__)
30
+ #define COCO_CHARCLASS_H__
31
+
32
+ #include "CharSet.h"
33
+
34
+ namespace Coco {
35
+
36
+ class CharClass {
37
+ public:
38
+ int n; // class number
39
+ wchar_t* name; // class name
40
+ CharSet *set; // set representing the class
41
+
42
+ CharClass(const wchar_t* name, CharSet *s);
43
+ virtual ~CharClass();
44
+ };
45
+
46
+ }; // namespace
47
+
48
+ #endif // !defined(COCO_CHARCLASS_H__)