summaryrefslogtreecommitdiff
path: root/lily/include/my-lily-parser.hh
blob: 1da7940b692ef945eed776b67a0858fff1d15e6c (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
  my-lily-parser.hh -- declare My_lily_parser

  source file of the LilyPond music typesetter

  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/


#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 "duration.hh"
#include "string.hh"
#include "varray.hh"
#include "input.hh"

class My_lily_parser {
    char const* here_ch_C()const;
    Array<Input> define_spot_array_;
  

    void add_requests( Voice_element*v);

    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<Request*> 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();
public:
    void parse_file ( String init_str, String file_str);
    My_lily_parser(Sources * sources_l);
    ~My_lily_parser();
};

#endif // MY_LILY_PARSER_HH