X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Finclude%2Fmy-lily-parser.hh;h=83fbb1386261d61a92b5c40cc7d2a04c0de24c75;hb=9458fa215af0294e9c38d62cc3a237a85fe50509;hp=cd27e9b574f2c14ac19389742cae3f9653015c6c;hpb=7f0a3b682bebc864fbca295deba301238d805274;p=lilypond.git diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh index cd27e9b574..83fbb13862 100644 --- a/lily/include/my-lily-parser.hh +++ b/lily/include/my-lily-parser.hh @@ -1,73 +1,86 @@ /* my-lily-parser.hh -- declare My_lily_parser - source file of the LilyPond music typesetter + source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ - #ifndef MY_LILY_PARSER_HH #define MY_LILY_PARSER_HH -#include "proto.hh" -#include "duration.hh" -#include "string.hh" -#include "varray.hh" -#include "lily-proto.hh" -#include "proto.hh" + +#include "array.hh" #include "duration.hh" -#include "string.hh" -#include "varray.hh" #include "input.hh" +#include "parray.hh" +#include "pitch.hh" +#include "smobs.hh" +#include "string.hh" + +/** + State for the parser. Do not ever add any variables to parse + musical content here. We still have to remove default_duration_. -class My_lily_parser { - char const* here_ch_C()const; - Array define_spot_array_; - + TODO: interface is too complicated +*/ +class My_lily_parser +{ + DECLARE_SMOBS (My_lily_parser, ); + friend int yyparse (void*); - void add_requests( Voice_element*v); + 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 *); - Voice_element * get_note_element(Note_req * ,Duration *); - Voice_element* get_rest_element(String,Duration *); - Voice_element* get_word_element(Text_def*, Duration*); - void set_last_duration(Duration const *); - void set_duration_mode(String s); - friend int yyparse( void*); -public: - int default_octave_i_; - Duration default_duration_; - String textstyle_str_; - - bool last_duration_mode ; - 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, Melodic_req* req_p); - Input here_input()const; - void remember_spot(); - Input pop_spot(); - - Paper_def*default_paper(); - void do_yyparse(); - void parser_error(String); - void clear_notenames(); - - Request* get_parens_request(char c); - - void set_debug(); - void set_yydebug(bool); - void print_declarations(); - bool ignore_version_b_; public: - void parse_file ( String init_str, String file_str); - My_lily_parser(Sources * sources_l); - ~My_lily_parser(); - void set_version_check(bool ignore); + My_lily_lexer *lexer_; + Sources *sources_; + Duration default_duration_; + String output_basename_; + + int score_count_; + int book_count_; + + int fatal_error_; + int error_level_; + bool ignore_version_b_; + SCM last_beam_start_; + + My_lily_parser (Sources *sources); + My_lily_parser (My_lily_parser const&); + + DECLARE_SCHEME_CALLBACK (paper_description, ()); + + Input here_input () const; + Input pop_spot (); + void beam_check (SCM); + void do_init_file (); + void do_yyparse (); + void parse_file (String init, String name, String out_name); + void parse_string (String ly_code); + void parser_error (String); + void push_spot (); + void set_yydebug (bool); }; -#endif // MY_LILY_PARSER_HH +DECLARE_UNSMOB (My_lily_parser, my_lily_parser); + +SCM ly_parse_file (SCM); +SCM ly_parse_string (SCM); +// SCM ly_parser_add_book_and_score (SCM, SCM); +SCM ly_parser_print_book (SCM, SCM); +SCM ly_parser_print_score (SCM, SCM); +SCM ly_parser_bookify (SCM, SCM); +SCM ly_parser_scorify (SCM, SCM); + +Output_def *get_paper (My_lily_parser *parser); +Output_def *get_midi (My_lily_parser *parser); +Output_def *get_bookpaper (My_lily_parser *parser); + +#endif /* MY_LILY_PARSER_HH */