X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmy-lily-lexer.hh;h=bdc95f7465f49cdd5e43eb3c4ca785944b81f8b3;hb=c4905a1f5b840d2b9f625e79a340e2a3a23dba08;hp=06449288ed14a011ce7747375f7d8fb68357fe84;hpb=5df02e6bebe82a9da8ae4576bdbc08733161d636;p=lilypond.git diff --git a/lily/include/my-lily-lexer.hh b/lily/include/my-lily-lexer.hh index 06449288ed..bdc95f7465 100644 --- a/lily/include/my-lily-lexer.hh +++ b/lily/include/my-lily-lexer.hh @@ -3,20 +3,19 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2002 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ -#ifndef LEXER_HH -#define LEXER_HH +#ifndef MY_LILY_LEXER_HH +#define MY_LILY_LEXER_HH -#include +#include "includable-lexer.hh" -#include "dictionary.hh" +#include "input.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" @@ -25,52 +24,67 @@ bool busy_parsing (); void kill_lexer (); void set_lexer (); -/// lexer for Lilypond class My_lily_lexer : public Includable_lexer { +public: Protected_scm scopes_; + Protected_scm encoding_; + +private: + 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; + public: - String main_input_string_; - void * lexval; + String main_input_name_; + void *lexval; bool main_input_b_; + + Sources *sources_; - /* - Scheme hash tables with (oct name acc) values, and symbol keys - */ + /* Scheme hash tables with (oct name acc) values, and symbol keys. */ Protected_scm chordmodifier_tab_; - Protected_scm pitchname_tab_; - Keyword_table * keytable_; - int errorlevel_; + Protected_scm pitchname_tab_stack_; - My_lily_lexer (); + Keyword_table *keytable_; + int error_level_; + Input last_input_; + + My_lily_lexer (Sources*); + My_lily_lexer (My_lily_lexer const&); ~My_lily_lexer (); + int yylex (); + void prepare_for_next_token (); + int try_special_identifiers (SCM* ,SCM); Input here_input () const; - + void add_scope (SCM); SCM remove_scope (); void start_main_input (); SCM lookup_identifier (String s); - void push_note_state (); + SCM lookup_identifier_symbol (SCM s); + void push_chord_state (SCM tab); void push_figuredbass_state (); - void push_chord_state (); void push_lyric_state (); + void push_initial_state (); + void push_markup_state (); + 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); - 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; + bool is_note_state () const; + bool is_chord_state () const; + bool is_lyric_state () const; + bool is_figure_state () const; }; -#endif +#endif /* MY_LILY_LEXER_HH */