]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/my-lily-lexer.hh
release: 0.1.63
[lilypond.git] / lily / include / my-lily-lexer.hh
1 /*
2   lexer.hh -- declare My_lily_lexer
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9 #ifndef LEXER_HH
10 #define LEXER_HH
11
12 #include <FlexLexer.h>
13
14 #include "lily-proto.hh"
15 #include "lily-proto.hh"
16 #include "fproto.hh"
17 #include "varray.hh"
18 #include "string.hh"
19 #include "includable-lexer.hh"
20 #include "duration.hh"
21
22 bool busy_parsing();
23 void kill_lexer();
24 void set_lexer();
25
26
27 /// lexer for Mudela
28 class My_lily_lexer : public Includable_lexer {
29   int lookup_keyword (String);
30   int scan_bare_word (String);
31   int scan_escaped_word (String);
32
33   char escaped_char(char) const;
34 public:
35   String main_input_str_;
36   void * lexval_l;
37   Scope * toplevel_scope_p_;
38   
39   Notename_table  *note_tab_p_;
40   Array<Scope*> scope_l_arr_;
41   Keyword_table * keytable_p_;
42   int errorlevel_i_;
43
44   /* *************** */
45
46   void start_main_input ();
47   void clear_notenames();
48   Identifier*lookup_identifier (String s);
49   Melodic_req* lookup_melodic_req_l (String s);
50   void push_note_state();
51   void push_lyric_state();
52   void pop_state();
53   void LexerError (char const *);
54   My_lily_lexer();
55   void set_identifier (String str, Identifier* i, bool unique_b = true);
56   ~My_lily_lexer();
57   int yylex();
58   void print_declarations (bool init_b) const;
59   void add_notename (String, Melodic_req*);
60   bool note_state_b() const;
61   bool lyric_state_b() const;
62 };
63
64 #endif