X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmy-lily-lexer.hh;h=2c3d40595288e853e2ed231236e0210adcc7655b;hb=refs%2Ftags%2Frelease%2F1.5.19;hp=c3f2bfa38853a24827307f8108ca6f5d468d5ff3;hpb=dbed556ca13bc2371e83774890eaa06bc8b04def;p=lilypond.git diff --git a/lily/include/my-lily-lexer.hh b/lily/include/my-lily-lexer.hh index c3f2bfa388..2c3d405952 100644 --- a/lily/include/my-lily-lexer.hh +++ b/lily/include/my-lily-lexer.hh @@ -1,79 +1,77 @@ /* lexer.hh -- declare My_lily_lexer - source file of the LilyPond music typesetter + source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--2001 Han-Wen Nienhuys */ #ifndef LEXER_HH #define LEXER_HH + #include -#include "proto.hh" -#include "fproto.hh" -#include "varray.hh" + +#include "dictionary.hh" +#include "lily-proto.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" -int yylex(); -void yyerror(char const *s); -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_; -struct Lexer_prefs { - int default_duration, default_dots, default_octave_i_; - int default_plet_type, default_plet_dur; - String textstyle_str_; - - bool last_duration_mode ; - - Lexer_prefs(); - Moment plet_mom(); - void set_default_duration(int *); - void set_last_duration(int n); - void set_duration_mode(String s); - void get_default_duration(int *); - void set_plet(int,int); -}; + /* + 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 with provisions for include files. -class My_lily_lexer : public yyFlexLexer { - int lookup_keyword(String); - void lookup_notename(int &large, int &small, String s); - int scan_bare_word(String); - int scan_escaped_word(String); + My_lily_lexer (); + ~My_lily_lexer (); + int yylex (); -public: - Lexer_prefs prefs; - - Array include_stack_; - Assoc *identifier_assoc_p_; - Keyword_table * keytable_p_; - int errorlevel_i_; + Input here_input () const; - /* *************** */ + void start_main_input (); - Identifier*lookup_identifier(String s); - char const* here_ch_c_l(); - - void push_note_state(); - void push_lyric_state(); - void pop_state(); - void LexerError(char const *); - String spot() const; - My_lily_lexer(); - void add_identifier(Identifier*i); - ~My_lily_lexer(); - void new_input(String s); - bool close_input(); - int yylex(); - void print_init_declarations() const; - void print_user_declarations() const; - bool note_state_b() const; - bool lyric_state_b() const; -}; + 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); -extern My_lily_lexer *lexer; + char escaped_char (char) const; +}; #endif