X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Flily-parser.hh;h=5009e693e34af90dd52b49b92b00d5d5af32e546;hb=29d5e0a64d0eee69e4ebee1e76e4df26ae58190b;hp=c73f8f7991faedd86fd1d7243895dfa0c006fbf0;hpb=08fbee8d085bc6e471d6614bdaf8b29eac2169b4;p=lilypond.git diff --git a/lily/include/lily-parser.hh b/lily/include/lily-parser.hh index c73f8f7991..5009e693e3 100644 --- a/lily/include/lily-parser.hh +++ b/lily/include/lily-parser.hh @@ -1,9 +1,20 @@ /* - lily-parser.hh -- declare Lily_parser + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 1997--2012 Han-Wen Nienhuys - (c) 1997--2007 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #ifndef LILY_PARSER_HH @@ -22,14 +33,11 @@ class Lily_parser { DECLARE_SMOBS (Lily_parser); - friend int yyparse (void *); - - vector define_spots_; char const *here_str0 () const; Simultaneous_music *get_chord (Pitch tonic, - vector *adds, vector *subs, - Pitch *inversion, Pitch *bass, Duration d); + vector *adds, vector *subs, + Pitch *inversion, Pitch *bass, Duration d); void set_chord_tremolo (int type); void set_last_duration (Duration const *); void set_last_pitch (Pitch const *); @@ -39,43 +47,42 @@ public: Sources *sources_; Duration default_duration_; string output_basename_; + SCM closures_; int fatal_error_; int error_level_; bool ignore_version_b_; Lily_parser (Sources *sources); - Lily_parser (Lily_parser const &); + Lily_parser (Lily_parser const &, SCM closures = SCM_EOL, + SCM location = SCM_BOOL_F); DECLARE_SCHEME_CALLBACK (layout_description, ()); void clear (); void do_init_file (); - void do_yyparse (); + SCM do_yyparse (); + void include_string (string ly_code); void parse_file (string init, string name, string out_name); void parse_string (string ly_code); + SCM parse_string_expression (string ly_code, string filename, int line); void parser_error (string); void parser_error (Input const &, string); + // The following is called as yyerror + static void parser_error (Input const *i, Lily_parser *parser, SCM *, string s); void set_yydebug (bool); - SCM make_scope () const; + SCM make_scope () const; }; DECLARE_UNSMOB (Lily_parser, 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_layout (Lily_parser *parser); Output_def *get_midi (Lily_parser *parser); Output_def *get_paper (Lily_parser *parser); -void stack_paper (Lily_parser *parser, Output_def *paper); -void unstack_paper (Lily_parser *parser); +void init_papers (Lily_parser *parser); +void push_paper (Lily_parser *parser, Output_def *paper); +void pop_paper (Lily_parser *parser); void set_paper (Lily_parser *parser, Output_def *paper); SCM get_header (Lily_parser *parser);