RE: boost::spirit and boost in general for c++ people.

  • From: "Homme, James" <james.homme@xxxxxxxxxxxx>
  • To: "programmingblind@xxxxxxxxxxxxx" <programmingblind@xxxxxxxxxxxxx>
  • Date: Fri, 8 Apr 2011 07:39:59 -0400

Hi,
I have no idea what you just said, Kerneels, but anyone who wishes to display 
their vast knowledge should put it up on http://www.fruitbasketdemos.org or 
http://www.nonvisualdevelopment.org where it can help others.

Jim

Jim Homme,
Usability Services,
Phone: 412-544-1810. Skype: jim.homme
Highmark recipients,  Read my accessibility blog. Discuss accessibility here. 
Accessibility Wiki: Breaking news and accessibility advice


-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx 
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Kerneels Roos
Sent: Friday, April 08, 2011 4:03 AM
To: programmingblind@xxxxxxxxxxxxx
Subject: Re: boost::spirit and boost in general for c++ people.

Ty, I haven't had the time to study your code in depth, but I've got a 
feeling that a Python implementation would be way more readable and 
simple. Now how big the bytecode would be and how well it would perform 
would have to be seen.

Hey! How about a second generation of fruit basket programs -- fruit 
calculators?

We should also seriously look at fruit basket improved programs based on 
frameworks, with persistent storage. Anyone for ideas of what to put 
into such a specification?

Keep well wonderful people!

Kerneels

On 4/8/2011 2:17 AM, Littlefield, Tyler wrote:
> I have no clue what your message said since you contradicted yourself 
> three times. "will take you longer less nashing of the teeth." 
> boost::spirit isn't all that dificult, and it was rather quick. "less 
> of a memory hog:" my calculator takes 916 bytes RSS memory. maybe 3k 
> at most, the binary size is under 20 kb when optomised.
> On 4/7/2011 6:11 PM, Ken Perry wrote:
>> Sure there is a better way.  You write it to fit the problem.  Now 
>> better is
>> a subjective term because while the code will look cleaner be better 
>> less
>> memory hog.  I t will take you long.er and much nashing of teeth.  So 
>> the
>> question is what you mean by better.
>>
>> Ken
>>
>> -----Original Message-----
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Sina Bahram
>> Sent: Thursday, April 07, 2011 3:20 PM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: RE: boost::spirit and boost in general for c++ people.
>>
>> I don't think a better way exists in C++. That's kind of my point.
>>
>> That's why I think it's so sad.
>>
>> Ken, thoughts?
>>
>> Take care,
>> Sina
>>
>> -----Original Message-----
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Homme, James
>> Sent: Thursday, April 07, 2011 12:42 PM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: RE: boost::spirit and boost in general for c++ people.
>>
>> Hi Sina,
>> What I meant when I said I could read the code was simply that I was 
>> glad
>> that I was understanding a lot of it. It would really be
>> instructive to me if you would help me understand a better way to 
>> write it,
>> because I would love to learn OO correctly the first
>> time. And I would be greatful if you would be able to do that. I know 
>> you
>> are very busy.
>>
>> Thanks.
>>
>> Jim
>>
>>
>> Jim Homme,
>> Usability Services,
>> Phone: 412-544-1810. Skype: jim.homme
>> Highmark recipients,  Read my accessibility blog. Discuss accessibility
>> here. Accessibility Wiki: Breaking news and accessibility
>> advice
>>
>> -----Original Message-----
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Sina Bahram
>> Sent: Thursday, April 07, 2011 11:22 AM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: RE: boost::spirit and boost in general for c++ people.
>>
>> Good god, this is ugly.
>>
>> Seriously, you guys find that code easy to read?
>>
>> Take care,
>> Sina
>>
>> -----Original Message-----
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry
>> Sent: Thursday, April 07, 2011 10:07 AM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: RE: boost::spirit and boost in general for c++ people.
>>
>> Snicker welcome to the future... Hmm how many times have I told you 
>> to use
>> it and you told me no???
>>
>> Ken
>>
>> -----Original Message-----
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Littlefield,
>> Tyler
>> Sent: Thursday, April 07, 2011 9:09 AM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: boost::spirit and boost in general for c++ people.
>>
>> hello all:
>> Recently I got into using boost a bit and started finding uses for it
>> all over the place. I would like to encourage those who haven't yet and
>> use c++ to check it out; it is quite powerful and can eas some of your
>> work and provide really cool features along the way. For example:
>> boost::function lets you take callbacks in multiple forms; boost::bind
>> will let you bind a functor to it's arguments and pass that as your
>> callback, which means you can bind to a static member function, a member
>> function (and pass the object with boost::ref), a global function and
>> you can also use boost::lambda.
>> There are many more utilities out there; I highly recommend checking out
>> boost::asio, boost::fusion, boost::function and boost::bind.
>> In the spirit of convincing you all, I wrote a small calculator program
>> that does single operations (1+3, 3*5), etc and returns the result.
>> My next step is to split up my parsing into different rulesets and then
>> work on generating an AST so that I can handle larger more complex
>> calculations.
>> /*
>> A simple calculator, supports multiplication, division, addition and
>> subtraction.
>> */
>> #include<boost/spirit/include/qi.hpp>
>> #include<boost/spirit/include/phoenix_core.hpp>
>> #include<boost/spirit/include/phoenix_operator.hpp>
>> #include<boost/spirit/include/phoenix_operator.hpp>
>> #include<iostream>
>> #include<string>
>> #include<boost/fusion/include/adapt_struct.hpp>
>> #include<boost/fusion/container/vector.hpp>
>> #include<boost/fusion/container/vector/convert.hpp>
>> #include<boost/fusion/include/io.hpp>
>>
>> namespace qi = boost::spirit::qi;
>> namespace ascii = boost::spirit::ascii;
>> namespace phoenix = boost::phoenix;
>>
>> struct calculation
>> {
>>     int a, b;
>>     char op;
>> };
>> BOOST_FUSION_ADAPT_STRUCT(calculation, (int, a) (char, op) (int, b) )
>>
>> template<typename iterator>
>> class CParser:public qi::grammar<iterator, calculation(),
>> qi::ascii::space_type>
>> {
>>     qi::rule<iterator, calculation(), qi::ascii::space_type>  crule;
>> public:
>>     CParser():CParser::base_type(crule)
>>     {
>>       using qi::ascii::char_;
>>       using qi::int_;
>>
>>       crule %= (int_>>
>>                 (char_('+')|char_('-')|char_('*')|char_('/'))>>
>>                 int_);
>>     }
>> };
>>
>> int main()
>> {
>>     CParser<std::string::iterator>  p;
>>     std::string str;
>>     calculation result;
>>
>>     std::cout<<  "Enter your calculation>";
>> getline(std::cin, str);
>>
>>     bool r = phrase_parse(str.begin(), str.end(), p, qi::ascii::space,
>> result);
>>     if (r)
>>       {
>>         std::cout<<  "a: "<<  result.a<<  " b: "<<  result.b<<  " op:"
>> <<  result.op<<  std::endl;
>>         switch(result.op)
>>           {
>>           case '+':
>>             std::cout<<  "Result: "<<  (result.a + result.b)<<  
>> std::endl;
>>             break;
>>           case '-':
>>             std::cout<<  "result: "<<  (result.a - result.b)<<  
>> std::endl;
>>             break;
>>           case '*':
>>             std::cout<<  "Result: "<<  (result.a * result.b)<<  
>> std::endl;
>>             break;
>>           case '/':
>>             if (result.a == 0)
>>               {
>>                 std::cout<<  "Division by zero error."<<  std::endl;
>>                 break;
>>               }
>>             std::cout<<  "result: "<<  (result.a / result.b)<<  
>> std::endl;
>>             break;
>>           default:
>>             std::cout<<  "Invalid operation."<<  std::endl;
>>           }
>>       }
>>     else
>>       {
>>         std::cout<<  "Invalid input."<<  std::endl;
>>       }
>>
>>     return 0;
>> }
>>
>> -- 
>>
>> Thanks,
>> Ty
>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>>
>> This e-mail and any attachments to it are confidential and are intended
>> solely for use of the individual or entity to whom they are
>> addressed.  If you have received this e-mail in error, please notify the
>> sender immediately and then delete it.  If you are not the
>> intended recipient, you must not keep, use, disclose, copy or distribute
>> this e-mail without the author's prior permission.  The
>> views expressed in this e-mail message do not necessarily represent the
>> views of Highmark Inc., its subsidiaries, or affiliates.
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>>
>
>

-- 
Kerneels Roos
Cell: +27 (0)82 309 1998
Skype: cornelis.roos

__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind

Other related posts: