This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 »
2326
Announcements / Re: Pride
« on: March 06, 2010, 09:32:16 pm »
This forum isn't on or related to Construct. If you want to talk about construct (or any other really great examples of how a parser can go right), we can make you another board next to Shupaer's.
Until then, I don't want to hear how everything I've done could have gone better if I had taken X method from Y project.
Until then, I don't want to hear how everything I've done could have gone better if I had taken X method from Y project.
2327
Announcements / Re: Pride
« on: March 06, 2010, 08:53:00 pm »
What good design would you be torturing with GM's?
Also, the only thing which would require a complete change in the logic of my parsers is a complete change in the language itself. New keywords can be added to the GML parser by changing one line, and to the C++ parser (more comprehensive) by adding in roughly three places (The switch of keywords, the list of token codes, and the handler for each under the semicolon/comma handler).
Also, the only thing which would require a complete change in the logic of my parsers is a complete change in the language itself. New keywords can be added to the GML parser by changing one line, and to the C++ parser (more comprehensive) by adding in roughly three places (The switch of keywords, the list of token codes, and the handler for each under the semicolon/comma handler).
2328
Announcements / Re: Pride
« on: March 06, 2010, 02:43:50 pm »
Feel free to read it over and discern what has been reinvented.
...Also, writing a parser for one language does not imply that you can write one for any language. Especially not C++.
...Also, writing a parser for one language does not imply that you can write one for any language. Especially not C++.
2329
Announcements / Re: Encryption
« on: March 06, 2010, 02:01:54 pm »
I don't see why you're distinguishing operator= from any other member function. Operator= (and the implied other assignment operators) would just be the only good reason to use a type for this, as it would prevent me having to parse in a new block of code myself.
2330
Announcements / Re: Pride
« on: March 06, 2010, 01:39:35 pm »
All right, that's finally starting to bother me. If any of those things were the case, where the hell was anyone that was going to prove that? Hm?
I was the only one doing fuck-anything on this project. I expressed countless times that I hate the recursive decent method. I don't care if you'd rather study one of those methods than learn mine; mine's faster. And no, using recursive-descent would not have made the project finish faster, because I would have given up. Or needed an entire fucking team to help me.
I'm getting sick of your cynical opposition at every turn. If you think you can do this job better than me, feel free. It's even open source. Until that time, stop pretending that because you can read about a method that you can understand it and replicate it faster than I can.
I scarcely think you understand some of the things my parser can read. Let me tell you, I wrote the parser, and there were things it parsed that I didn't understand.
I was the only one doing fuck-anything on this project. I expressed countless times that I hate the recursive decent method. I don't care if you'd rather study one of those methods than learn mine; mine's faster. And no, using recursive-descent would not have made the project finish faster, because I would have given up. Or needed an entire fucking team to help me.
I'm getting sick of your cynical opposition at every turn. If you think you can do this job better than me, feel free. It's even open source. Until that time, stop pretending that because you can read about a method that you can understand it and replicate it faster than I can.
I scarcely think you understand some of the things my parser can read. Let me tell you, I wrote the parser, and there were things it parsed that I didn't understand.
2331
Announcements / Re: Prophase
« on: March 06, 2010, 09:22:24 am »
Only the next three newsposts.
2332
Announcements / Prophase
« on: March 06, 2010, 12:47:05 am »
The C Parser is now hooked up such that it is self sufficient in collecting information.
On initialization, it asks the GCC to dump built-in #defines into a file that it can read. It parses those to gain the ability to correctly evaluate later preprocessors and the like, then it begins parsing SHELLmain.cpp, which will soon be moved (for the most part) to a separate header, since that particular source file shouldn't be responsible for all of that.
While getting it to work, I was met only with the problem of setting the working directory, which is currently temporarily resolved: I set it manually with a relative path that will have to be changed for the release compile.
However, once that was implemented, it made it through the entire project without incident. I asked it to print the contents of the enigma namespace to be sure it got it all, and was blown away.
At that, mission accomplished. I will make sure the GML parser and syntax checker are performing adequately tomorrow, which they shouldn't be, considering I am recoding a chunk of each to use the new input.
Expect material to be tested this coming week (Surprise). Don't expect anything grandiose during testing; I've not even hooked up the DLL functions yet. What you should see is vastly improved compile time and some small bugfixes that were made before the split. Serp's optimized code as well as the things that have been implemented since R3 are not part of the equation at this point.
In fact, the struggle of the next several days is going to be getting LGM to communicate better with ENIGMA, which has officially outgrown its separate-module form. I remember when syntax check rang in at 13x faster than GM's while code was being sent as a file. XD Those days are over, and now we'll be faster with dignity.
*commits code in whatever state it may be*
I haven't seen Ism today. I'll definitely need her for this part...
Ed suggests we use JNA to handle the interface as a DLL. We'll see how that works for us.
Ciao for now.
On initialization, it asks the GCC to dump built-in #defines into a file that it can read. It parses those to gain the ability to correctly evaluate later preprocessors and the like, then it begins parsing SHELLmain.cpp, which will soon be moved (for the most part) to a separate header, since that particular source file shouldn't be responsible for all of that.
While getting it to work, I was met only with the problem of setting the working directory, which is currently temporarily resolved: I set it manually with a relative path that will have to be changed for the release compile.
However, once that was implemented, it made it through the entire project without incident. I asked it to print the contents of the enigma namespace to be sure it got it all, and was blown away.
At that, mission accomplished. I will make sure the GML parser and syntax checker are performing adequately tomorrow, which they shouldn't be, considering I am recoding a chunk of each to use the new input.
Expect material to be tested this coming week (Surprise). Don't expect anything grandiose during testing; I've not even hooked up the DLL functions yet. What you should see is vastly improved compile time and some small bugfixes that were made before the split. Serp's optimized code as well as the things that have been implemented since R3 are not part of the equation at this point.
In fact, the struggle of the next several days is going to be getting LGM to communicate better with ENIGMA, which has officially outgrown its separate-module form. I remember when syntax check rang in at 13x faster than GM's while code was being sent as a file. XD Those days are over, and now we'll be faster with dignity.
*commits code in whatever state it may be*
I haven't seen Ism today. I'll definitely need her for this part...
Ed suggests we use JNA to handle the interface as a DLL. We'll see how that works for us.
Ciao for now.
2333
Announcements / Re: Encryption
« on: March 05, 2010, 11:08:46 pm »
That's a tad more specific than what I was describing. It'd also require a lot of template instantiations.
2334
Tips, Tutorials, Examples / Re: lol streams
« on: March 05, 2010, 09:54:21 pm »
The only difference between const char* and char* is that const char* points to read-only memory. And even that's only on systems that support such (ie, not Windows). '\0' == 0, and I'd be willing to bet that if you were to compare {'n','o',0} and "no" you'd get that they were equivalent. And I do mean as-is.
"Test" == "test" compares correctly for string literals. "Test" == "test" will return false, "test" == "test" will return true. This is because they point to the same location in memory when GCC is done with them.
Also, you don't need to use const_cast to get it represented as a const char.
Const char* can be set to a char* without cast. Vice-versa requires cast, but is dangerous on Linux and the like.
"Test" == "test" compares correctly for string literals. "Test" == "test" will return false, "test" == "test" will return true. This is because they point to the same location in memory when GCC is done with them.
Also, you don't need to use const_cast to get it represented as a const char.
Const char* can be set to a char* without cast. Vice-versa requires cast, but is dangerous on Linux and the like.
2335
Tips, Tutorials, Examples / Re: lol streams
« on: March 05, 2010, 09:33:35 pm »
He's thinking about 'situations where you need to quote "' + "that's" + '," or other situations requiring both "' + " and '".
2336
Announcements / Re: Pride
« on: March 05, 2010, 07:24:18 pm »
I use a goto roughly four times in the C parser. My labels are usually descriptive and located nearby. Usually.
2337
Announcements / Re: Encryption
« on: March 05, 2010, 03:26:50 pm »
The only way that could have anything to do with typing is if I made a class that did the checks on operator=, which wasn't what I was suggesting.
2338
Announcements / Re: Pride
« on: March 05, 2010, 10:34:32 am »
It's by no means a hack. GML does support switch(); it will let you switch either a real or string. Switching an array switches its first value.
Just because a code uses goto doesn't mean it's a hack. Goto was excommunicated from use in high level code due to it making said code difficult to read when misused. Case labels are just that: labels. The compiler writes the hash map instead of me doing it. The same will apply to ENIGMA.
Just because a code uses goto doesn't mean it's a hack. Goto was excommunicated from use in high level code due to it making said code difficult to read when misused. Case labels are just that: labels. The compiler writes the hash map instead of me doing it. The same will apply to ENIGMA.
2339
Announcements / Re: Encryption
« on: March 04, 2010, 07:20:40 pm »
I could have worded that better. - fix'd
I meant that it could do such things as find locations where given variables are modified. The conditions of the set could then be relayed to the server-side module. That could of course be spoofed, but it'd be a step.
I think a more comprehensive idea would be to have submit the locations of certain key objects along with any changes; the server would allow a small tolerance accounted for by lag. No one likes missing a shot because the server and client disagree on a location.
So, a function could be defined for call when a certain variable is set or action is performed requesting a double check on locations and allowing the server to double check the math.
Frankly, I'm not sure how convenient such an idea would be, hence my not promoting it or "making any promises."
I meant that it could do such things as find locations where given variables are modified. The conditions of the set could then be relayed to the server-side module. That could of course be spoofed, but it'd be a step.
I think a more comprehensive idea would be to have submit the locations of certain key objects along with any changes; the server would allow a small tolerance accounted for by lag. No one likes missing a shot because the server and client disagree on a location.
So, a function could be defined for call when a certain variable is set or action is performed requesting a double check on locations and allowing the server to double check the math.
Frankly, I'm not sure how convenient such an idea would be, hence my not promoting it or "making any promises."
2340
Tips, Tutorials, Examples / Re: lol streams
« on: March 04, 2010, 06:44:39 pm »
String already defines those...
And then some...
And then some...
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 »