X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Flily-lexer.hh;h=5609f53f4d17479254820e9df489b4465e539384;hb=89db5c71c36627cfc7d9bd9754a014b8bc95c6c2;hp=26ac92a6c2c46b5b011cfbd96c8da10b91f12897;hpb=aaaff9b890e41906622e14d571ad8fd555cab64e;p=lilypond.git diff --git a/lily/include/lily-lexer.hh b/lily/include/lily-lexer.hh index 26ac92a6c2..5609f53f4d 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--2006 Han-Wen Nienhuys */ #ifndef MY_LILY_LEXER_HH @@ -12,40 +12,38 @@ #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 (); -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_; + string main_input_name_; 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_; @@ -54,21 +52,30 @@ public: 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 (); @@ -77,9 +84,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;