X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmy-lily-lexer.hh;h=bdc95f7465f49cdd5e43eb3c4ca785944b81f8b3;hb=084f3d97cdb0dde6d31d09f291a7f46423d15ce8;hp=423a77127885d8837709f694271f492f04391c1c;hpb=1ecbcc5337a3ea4d347b197c60e9c95ea11ad93e;p=lilypond.git diff --git a/lily/include/my-lily-lexer.hh b/lily/include/my-lily-lexer.hh index 423a771278..bdc95f7465 100644 --- a/lily/include/my-lily-lexer.hh +++ b/lily/include/my-lily-lexer.hh @@ -3,66 +3,88 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 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 "lily-proto.hh" +#include "input.hh" #include "lily-proto.hh" -#include "fproto.hh" +#include "flower-proto.hh" #include "array.hh" #include "string.hh" -#include "includable-lexer.hh" #include "duration.hh" -#include "musical-pitch.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 Mudela -class My_lily_lexer : public Includable_lexer { +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; - char escaped_char(char) const; public: - String main_input_str_; - void * lexval_l; - Scope * toplevel_scope_p_; + String main_input_name_; + void *lexval; + bool main_input_b_; - Notename_table *note_tab_p_; - Array scope_l_arr_; - Keyword_table * keytable_p_; - int errorlevel_i_; + Sources *sources_; + /* Scheme hash tables with (oct name acc) values, and symbol keys. */ + Protected_scm chordmodifier_tab_; + Protected_scm pitchname_tab_stack_; + 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 (); - void set_notename_table(Notename_table*tab_p); - bool notename_b(String) const; - Identifier*lookup_identifier (String s); - Musical_pitch lookup_pitch (String s); - void push_note_state(); - void push_chord_state(); - void push_lyric_state(); - void pop_state(); + + SCM lookup_identifier (String s); + SCM lookup_identifier_symbol (SCM s); + void push_chord_state (SCM tab); + void push_figuredbass_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 *); - My_lily_lexer(); - void set_identifier (String str, Identifier* i, bool unique_b = true); - ~My_lily_lexer(); - int yylex(); - void print_declarations (bool init_b) const; - void add_notename (String, Musical_pitch); - bool note_state_b() const; - bool chord_state_b() const; - bool lyric_state_b() const; + void set_encoding (String); + SCM encoding () const; + void set_identifier (SCM name_string, SCM); + 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 */