[chuck-users] FileIO.read( int ) -- why not implement?

Hans Aberg haberg at math.su.se
Mon Feb 8 15:24:26 EST 2010


I made a C++ manipulator syntax for use with a Bison/Flex parser. In  
ChucK pseudocode:
   parser p;
   value v;
   chin => p => v;
If the parse succeeds, one gets a value v, which can be polymorphic or  
static, depending how the parse defines it. Errors are checked by
   if (!chin => p => v)
     error ...
or by exceptions:
   try {
     chin => p => v
     ...
   }
   catch ...

If one likes values to check errors, rather than states and  
exceptions, then Haskell has a type Maybe t, where t is a type, which  
have the value Nothing or Just t, a value t:
   chin => p => Maybe value m;
   if ( == Nothing)
     error ....
   just m => value v;

I like this manipulator syntax, because it is easy to remember. One  
might have a class for regular expressions:
   "..." => regex r:
   chin => r => string s;
and other standard classes for parsing values such as integers,  
floats, etc.

Also, I found the C++ way of setting various states to parse the input  
rather cumbersome, because often one wants to write a function that  
has its own context for parsing the input. With the state model, one  
then has to record the state and reste it when finished.

The manipulator syntax avoids that problem.

   Hans




More information about the chuck-users mailing list