X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Finclude%2Fmy-lily-parser.hh;h=8d514f7b7d77b36b276675bf9e1fec534fb5ac29;hb=a6ee9dcd388111e842064a8d46ab06c4897a00d2;hp=7a414b4614b4f28ef26f199b307e258bb2b1d881;hpb=1ecbcc5337a3ea4d347b197c60e9c95ea11ad93e;p=lilypond.git diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh index 7a414b4614..8d514f7b7d 100644 --- a/lily/include/my-lily-parser.hh +++ b/lily/include/my-lily-parser.hh @@ -3,78 +3,80 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--2002 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" -class My_lily_parser { - char const* here_ch_C() const; - Array define_spot_array_; - String init_str_; +/** + State for the parser. Do not ever add any variables to parse + musical content here. We still have to remove default_duration_. - void add_requests (Simultaneous_music*v); + TODO: interface is too complicated +*/ +class My_lily_parser +{ +public: + My_lily_parser (Sources * sources); + ~My_lily_parser (); - Simultaneous_music * get_note_element (Note_req * ,Duration *); - Simultaneous_music * get_chord (Musical_pitch, Array*, Array*, 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); - void set_last_duration (Duration const *); - void set_abbrev_beam (int type_i); - friend int yyparse (void*); + void do_init_file (); + void parse_file ( String init_string, String file_string); + void set_version_check (bool ignore); public: - int abbrev_beam_type_i_; - int default_abbrev_i_; Duration default_duration_; - Extender_req* extender_req; - Plet plet_; - 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_; - - Moment plet_mom(); - void add_notename (String, Musical_pitch req_p); - Input here_input() const; - void remember_spot(); - Input pop_spot(); + + Scheme_hash_table *default_header_; + + int fatal_error_; + Sources * source_; + 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_; -public: - void do_init_file(); - void parse_file ( String init_str, String file_str); - My_lily_parser (Sources * sources_l); - ~My_lily_parser(); - void set_version_check (bool ignore); + + + DECLARE_SCHEME_CALLBACK (paper_description, ()); +private: + + 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_last_pitch (Pitch const *); + friend int yyparse (void*); }; #endif // MY_LILY_PARSER_HH