X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmy-lily-parser.hh;h=7f8534b5ba29d21c06c6689ba014f77b16061d79;hb=f84fa056117227739b77c1c50efc06e6ef4f32da;hp=918e61d0e0e1ed15334ff3cca3304cb9c8ab18c3;hpb=dca1986050e88c5117fc88ff2855fb209c96a5b8;p=lilypond.git diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh index 918e61d0e0..7f8534b5ba 100644 --- a/lily/include/my-lily-parser.hh +++ b/lily/include/my-lily-parser.hh @@ -3,78 +3,78 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--2003 Han-Wen Nienhuys */ #ifndef MY_LILY_PARSER_HH #define MY_LILY_PARSER_HH + #include "lily-proto.hh" #include "string.hh" -#include "array.hh" +#include "parray.hh" #include "lily-proto.hh" #include "lily-proto.hh" #include "duration.hh" +#include "pitch.hh" #include "string.hh" #include "array.hh" #include "input.hh" +/** + State for the parser. Do not ever add any variables to parse + musical content here. We still have to remove default_duration_. + + TODO: interface is too complicated +*/ class My_lily_parser { public: - My_lily_parser (Sources * sources_l); - ~My_lily_parser(); + My_lily_parser (Input_file_results * sources); + ~My_lily_parser (); - void do_init_file(); - void parse_file ( String init_str, String file_str); - void set_version_check (bool ignore); + void do_init_file (); + void parse_file ( String init_string, String file_string); public: - int abbrev_beam_type_i_; - int default_abbrev_i_; Duration default_duration_; - Extender_req* extender_req; - Scope *default_header_p_; - - bool first_b_; - - Array pre_reqs, post_reqs; - int fatal_error_i_; - Sources * source_l_; - int error_level_i_; - bool init_parse_b_; - My_lily_lexer * lexer_p_; - - Input here_input() const; - void remember_spot(); - Input pop_spot(); + + Scheme_hash_table *default_header_; + + int fatal_error_; + Input_file_results * input_file_; + int error_level_; + + My_lily_lexer * lexer_; + bool ignore_version_b_; + + SCM last_beam_start_; + void beam_check (SCM); + + Input here_input () const; + void push_spot (); + Input pop_spot (); - Paper_def*default_paper_p(); - Midi_def*default_midi_p(); - void do_yyparse(); + void do_yyparse (); void parser_error (String); - Array* get_parens_request (int t); - - void set_debug(); void set_yydebug (bool); - bool ignore_version_b_; + + DECLARE_SCHEME_CALLBACK (paper_description, ()); private: - char const* here_ch_C() const; - Array define_spot_array_; - String init_str_; - - void add_requests (Simultaneous_music*v); - - Simultaneous_music * get_note_element (Note_req * ,Duration *); - Simultaneous_music * get_chord (Musical_pitch, Array*, Array*, Musical_pitch*, Duration); - Simultaneous_music* get_rest_element (String, Duration *); - Simultaneous_music* get_word_element (String, Duration*); - Melodic_req* get_melodic_req (Melodic_req* melodic, int quotes); - String notename_str (Melodic_req* melodic); + + Array define_spots_; + + char const* here_str0 () const; + + Simultaneous_music * get_chord (Pitch tonic, Array* adds, + Array* subs, Pitch* inversion, + Pitch* bass, Duration d); + + void set_chord_tremolo (int type_i); void set_last_duration (Duration const *); - void set_abbrev_beam (int type_i); + void set_last_pitch (Pitch const *); friend int yyparse (void*); };