X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Flily-lexer.hh;h=284e5636c6ec208db8e0fa9014d83793077d1bc1;hb=5b2bdf8c532aa1b4aa8626f6847938f2ef4ba1be;hp=b697068bcd99f52aaa99ee12c55bc3907e784902;hpb=c0d583928efa0d970e829d400e6732b7b21551f6;p=lilypond.git diff --git a/lily/include/lily-lexer.hh b/lily/include/lily-lexer.hh index b697068bcd..284e5636c6 100644 --- a/lily/include/lily-lexer.hh +++ b/lily/include/lily-lexer.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2004 Han-Wen Nienhuys + (c) 1997--2008 Han-Wen Nienhuys */ #ifndef MY_LILY_LEXER_HH @@ -12,66 +12,69 @@ #include "includable-lexer.hh" #include "input.hh" -#include "lily-proto.hh" -#include "flower-proto.hh" -#include "array.hh" -#include "string.hh" #include "duration.hh" #include "pitch.hh" -#include "smobs.hh" bool busy_parsing (); void kill_lexer (); void set_lexer (); -/* - TODO: this has a lot of SCM objects. Smobify me. - */ -class Lily_lexer : public Includable_lexer +class Lily_lexer : public Includable_lexer { - DECLARE_SMOBS(Lily_lexer,); -public: - SCM scopes_; - SCM encoding_; - + DECLARE_SMOBS (Lily_lexer); + private: - int lookup_keyword (String); - int scan_bare_word (String); - SCM scan_markup_word (String); - int scan_escaped_word (String); + int lookup_keyword (string); + int scan_bare_word (string); + SCM scan_markup_word (string); + int scan_escaped_word (string); int identifier_type (SCM); char escaped_char (char) const; + Lily_parser *parser_; + Keyword_table *keytable_; + SCM scopes_; + SCM start_module_; + int hidden_state_; public: - String main_input_name_; + vector extra_token_types_; void *lexval; - bool main_input_b_; + Input *lexloc; + bool is_main_input_; - Sources *sources_; + Sources *sources_; /* Scheme hash tables with (oct name acc) values, and symbol keys. */ SCM chordmodifier_tab_; SCM pitchname_tab_stack_; - Keyword_table *keytable_; int error_level_; Input last_input_; - Lily_lexer (Sources*); - Lily_lexer (Lily_lexer const&); + Lily_lexer (Sources *, Lily_parser *); + Lily_lexer (Lily_lexer const &, Lily_parser *); int yylex (); + + void add_lexed_char (int); void prepare_for_next_token (); - int try_special_identifiers (SCM* ,SCM); + int try_special_identifiers (SCM *, SCM); Input here_input () const; - + void add_scope (SCM); + SCM set_current_scope (); + bool has_scope () const; SCM remove_scope (); - + void start_main_input (); - SCM lookup_identifier (String s); + virtual void new_input (string s, Sources *); + virtual void new_input (string s, string d, Sources *); + + SCM keyword_list () const; + SCM lookup_identifier (string s); SCM lookup_identifier_symbol (SCM s); + void push_extra_token (int token_type); void push_chord_state (SCM tab); void push_figuredbass_state (); void push_lyric_state (); @@ -80,9 +83,8 @@ public: void push_note_state (SCM tab); void pop_state (); void LexerError (char const *); - void set_encoding (String); - SCM encoding () const; void set_identifier (SCM name_string, SCM); + int get_state () const; bool is_note_state () const; bool is_chord_state () const; bool is_lyric_state () const;