X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=inline;f=lily%2Finclude%2Fmy-lily-lexer.hh;h=9868a3f68614b9a613ebc6963e3a83e9463447a9;hb=d9b43b93f2c885409bafdb157138158f65cc49aa;hp=e3272eb9cdfa2e591250ac48d2d66b9441dc624c;hpb=cec6dfa6bf0fb931eb7f42b1ee44ca2ec19a9f34;p=lilypond.git diff --git a/lily/include/my-lily-lexer.hh b/lily/include/my-lily-lexer.hh index e3272eb9cd..9868a3f686 100644 --- a/lily/include/my-lily-lexer.hh +++ b/lily/include/my-lily-lexer.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--2002 Han-Wen Nienhuys */ #ifndef LEXER_HH @@ -11,52 +11,67 @@ #include +#include "dictionary.hh" #include "lily-proto.hh" -#include "lily-proto.hh" -#include "fproto.hh" -#include "varray.hh" +#include "flower-proto.hh" +#include "array.hh" #include "string.hh" #include "includable-lexer.hh" #include "duration.hh" +#include "pitch.hh" +#include "protected-scm.hh" + +bool busy_parsing (); +void kill_lexer (); +void set_lexer (); -bool busy_parsing(); -void kill_lexer(); -void set_lexer(); +/// lexer for Lilypond +class My_lily_lexer : public Includable_lexer +{ +public: + String main_input_str_; + void * lexval_l; + Scheme_hash_table * toplevel_variable_tab_; + Scope * scope_p_; + + bool main_input_b_; + /* + Scheme hash tables with (oct name acc) values, and symbol keys + */ + Protected_scm chordmodifier_tab_; + Protected_scm pitchname_tab_; + + Link_array scope_l_arr_; + Keyword_table * keytable_p_; + int errorlevel_i_; -/// lexer for Mudela -class My_lily_lexer : public Includable_lexer { - int lookup_keyword (String); - int scan_bare_word (String); - int scan_escaped_word (String); + My_lily_lexer (); + ~My_lily_lexer (); + int yylex (); - bool post_quotes_b_; -public: - void * lexval_l; - - Notename_table *note_tab_p_; - Dictionary *identifier_p_dict_p_; - Keyword_table * keytable_p_; - int errorlevel_i_; - - /* *************** */ - - void clear_notenames(); - Identifier*lookup_identifier (String s); - Melodic_req* lookup_melodic_req_l (String s); - void push_header_state(); - void push_note_state(); - void push_lyric_state(); - void pop_state(); - void LexerError (char const *); - My_lily_lexer(); - void set_identifier (String,Identifier*i); - ~My_lily_lexer(); - int yylex(); - void print_declarations (bool init_b) const; - void add_notename (String, Melodic_req*); - bool note_state_b() const; - bool lyric_state_b() const; + Input here_input () const; + + void start_main_input (); + + SCM lookup_identifier (String s); + void push_note_state (); + void push_figuredbass_state (); + void push_chord_state (); + void push_lyric_state (); + void pop_state (); + void LexerError (char const *); + void set_identifier (String str, SCM); + bool note_state_b () const; + bool chord_state_b () const; + bool lyric_state_b () const; + bool figure_state_b () const; +private: + int lookup_keyword (String); + int scan_bare_word (String); + int scan_escaped_word (String); + + char escaped_char (char) const; }; #endif