/[svn]/linuxsampler/trunk/src/network/lscp.y
ViewVC logotype

Diff of /linuxsampler/trunk/src/network/lscp.y

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1353 by iliev, Mon Sep 17 23:15:25 2007 UTC revision 1399 by schoenebeck, Thu Oct 11 18:53:29 2007 UTC
# Line 101  int octalsToNumber(char oct_digit0, char Line 101  int octalsToNumber(char oct_digit0, char
101      return atoi(d2)*8*8 + atoi(d1)*8 + atoi(d0);      return atoi(d2)*8*8 + atoi(d1)*8 + atoi(d0);
102  }  }
103    
 int hexToNumber(char hex_digit) {  
     switch (hex_digit) {  
         case '0': return 0;  
         case '1': return 1;  
         case '2': return 2;  
         case '3': return 3;  
         case '4': return 4;  
         case '5': return 5;  
         case '6': return 6;  
         case '7': return 7;  
         case '8': return 8;  
         case '9': return 9;  
         // grammar rule 'digit_hex' already forced lower case  
         case 'a': return 10;  
         case 'b': return 11;  
         case 'c': return 12;  
         case 'd': return 13;  
         case 'e': return 14;  
         case 'f': return 15;  
         default:  return 0;  
     }  
 }  
   
 int hexsToNumber(char hex_digit0, char hex_digit1 = '0') {  
     return hexToNumber(hex_digit1)*16 + hexToNumber(hex_digit0);  
 }  
   
104  %}  %}
105    
106  // reentrant parser  // reentrant parser
# Line 141  int hexsToNumber(char hex_digit0, char h Line 114  int hexsToNumber(char hex_digit0, char h
114  %type <Char> char char_base digit digit_oct digit_hex escape_seq escape_seq_octal escape_seq_hex  %type <Char> char char_base digit digit_oct digit_hex escape_seq escape_seq_octal escape_seq_hex
115  %type <Dotnum> dotnum volume_value boolean  %type <Dotnum> dotnum volume_value boolean
116  %type <Number> number sampler_channel instrument_index fx_send_id audio_channel_index device_index midi_input_channel_index midi_input_port_index midi_map midi_bank midi_prog midi_ctrl  %type <Number> number sampler_channel instrument_index fx_send_id audio_channel_index device_index midi_input_channel_index midi_input_port_index midi_map midi_bank midi_prog midi_ctrl
117  %type <String> string string_escaped text text_escaped textval_escaped stringval stringval_escaped digits param_val_list param_val query_val filename db_path map_name entry_name fx_send_name engine_name command add_instruction create_instruction destroy_instruction get_instruction list_instruction load_instruction set_chan_instruction load_instr_args load_engine_args audio_output_type_name midi_input_type_name remove_instruction unmap_instruction set_instruction subscribe_event unsubscribe_event map_instruction reset_instruction clear_instruction find_instruction move_instruction copy_instruction scan_mode edit_instruction format_instruction  %type <String> string string_escaped text text_escaped text_escaped_base stringval stringval_escaped digits param_val_list param_val query_val filename db_path map_name entry_name fx_send_name engine_name command add_instruction create_instruction destroy_instruction get_instruction list_instruction load_instruction set_chan_instruction load_instr_args load_engine_args audio_output_type_name midi_input_type_name remove_instruction unmap_instruction set_instruction subscribe_event unsubscribe_event map_instruction reset_instruction clear_instruction find_instruction move_instruction copy_instruction scan_mode edit_instruction format_instruction
118  %type <FillResponse> buffer_size_type  %type <FillResponse> buffer_size_type
119  %type <KeyValList> key_val_list query_val_list  %type <KeyValList> key_val_list query_val_list
120  %type <LoadMode> instr_load_mode  %type <LoadMode> instr_load_mode
# Line 497  filename                  :  path  { $$ Line 470  filename                  :  path  { $$
470  db_path                   :  path  { $$ = $1.toDbPath(); }  db_path                   :  path  { $$ = $1.toDbPath(); }
471                            ;                            ;
472    
473  map_name                  :  stringval  map_name                  :  stringval_escaped
474                            ;                            ;
475    
476  entry_name                :  stringval  entry_name                :  stringval_escaped
477                            ;                            ;
478    
479  fx_send_name              :  stringval  fx_send_name              :  stringval_escaped
480                            ;                            ;
481    
482  param_val_list            :  param_val  param_val_list            :  param_val
483                            |  param_val_list','param_val  { $$ = $1 + "," + $3; }                            |  param_val_list','param_val  { $$ = $1 + "," + $3; }
484                            ;                            ;
485    
486  param_val                 :  string  //TODO: the re-encapsulation into apostrophes for string and strinval here is a hack, since we need a way for __parse_strings() (DeviceParameters.cpp) to distinguish a comma separated list of strings and a string which contains commas. A clean solution would be to move those parser jobs over here to lscp.y
487                            |  stringval  param_val                 :  string            { $$ = "\'" + $1 + "\'"; }
488                              |  stringval         { $$ = "\'" + $1 + "\'"; }
489                            |  number            { std::stringstream ss; ss << "\'" << $1 << "\'"; $$ = ss.str(); }                            |  number            { std::stringstream ss; ss << "\'" << $1 << "\'"; $$ = ss.str(); }
490                            |  dotnum            { std::stringstream ss; ss << "\'" << $1 << "\'"; $$ = ss.str(); }                            |  dotnum            { std::stringstream ss; ss << "\'" << $1 << "\'"; $$ = ss.str(); }
491                            ;                            ;
# Line 520  query_val_list            :  string '=' Line 494  query_val_list            :  string '='
494                            |  query_val_list SP string '=' query_val  { $$ = $1; $$[$3] = $5; }                            |  query_val_list SP string '=' query_val  { $$ = $1; $$[$3] = $5; }
495                            ;                            ;
496    
497  query_val                 :  textval_escaped  query_val                 :  text_escaped
498                            |  stringval_escaped                            |  stringval_escaped
499                            ;                            ;
500    
# Line 610  path                  :  '\'' path_base Line 584  path                  :  '\'' path_base
584                        |  '\"' path_base '\"'  { $$ = $2; }                        |  '\"' path_base '\"'  { $$ = $2; }
585                        ;                        ;
586    
587  path_base             :  '/'                     { $$ = Path();                           }  path_base             :  '/'                          { $$ = Path();                           }
588                        |  path_base '/'           { $$ = $1;                               }                        |  path_base '/'                { $$ = $1;                               }
589                        |  path_base text_escaped  { Path p; p.appendNode($2); $$ = $1 + p; }                        |  path_base text_escaped_base  { Path p; p.appendNode($2); $$ = $1 + p; }
590                        ;                        ;
591    
592  stringval             :  '\'' text '\''  { $$ = $2; }  stringval             :  '\'' text '\''  { $$ = $2; }
593                        |  '\"' text '\"'  { $$ = $2; }                        |  '\"' text '\"'  { $$ = $2; }
594                        ;                        ;
595    
596  stringval_escaped     :  '\'' textval_escaped '\''  { $$ = $2; }  stringval_escaped     :  '\'' text_escaped '\''  { $$ = $2; }
597                        |  '\"' textval_escaped '\"'  { $$ = $2; }                        |  '\"' text_escaped '\"'  { $$ = $2; }
598                        ;                        ;
599    
600  text                  :  SP           { $$ = " ";      }  text                  :  SP           { $$ = " ";      }
# Line 629  text                  :  SP           { Line 603  text                  :  SP           {
603                        |  text string  { $$ = $1 + $2;  }                        |  text string  { $$ = $1 + $2;  }
604                        ;                        ;
605    
606  text_escaped          :  SP                           { $$ = " ";      }  // like text_escaped, but missing the slash ('/') character
607    text_escaped_base     :  SP                                { $$ = " ";      }
608                        |  string_escaped                        |  string_escaped
609                        |  text_escaped SP              { $$ = $1 + " "; }                        |  text_escaped_base SP              { $$ = $1 + " "; }
610                        |  text_escaped string_escaped  { $$ = $1 + $2;  }                        |  text_escaped_base string_escaped  { $$ = $1 + $2;  }
611                        ;                        ;
612    
613  textval_escaped       :  '/'                           { $$ = "/";      }  text_escaped          :  '/'                              { $$ = "/";      }
614                        |  text_escaped                        |  text_escaped_base
615                        |  textval_escaped '/'           { $$ = $1 + "/"; }                        |  text_escaped '/'                 { $$ = $1 + "/"; }
616                        |  textval_escaped text_escaped  { $$ = $1 + $2;  }                        |  text_escaped text_escaped_base   { $$ = $1 + $2;  }
617                        ;                        ;
618    
619  string                :  char          { std::string s; s = $1; $$ = s; }  string                :  char          { std::string s; s = $1; $$ = s; }

Legend:
Removed from v.1353  
changed lines
  Added in v.1399

  ViewVC Help
Powered by ViewVC