#ifndef LEXER_HH
#define LEXER_HH
+
#include <FlexLexer.h>
+
#include "proto.hh"
#include "fproto.hh"
#include "varray.hh"
#include "string.hh"
+#include "includable-lexer.hh"
+#include "duration.hh"
-int yylex();
-void yyerror(char const *s);
bool busy_parsing();
void kill_lexer();
void set_lexer();
-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);
-};
-
-/// lexer with provisions for include files.
-class My_lily_lexer : public yyFlexLexer {
+/// lexer for Mudela
+class My_lily_lexer : public Includable_lexer {
int lookup_keyword(String);
void lookup_notename(int &large, int &small, String s);
int scan_bare_word(String);
int scan_escaped_word(String);
+ bool post_quotes_b_;
public:
- Lexer_prefs prefs;
+ void * lexval_l;
+
- Array<Input_file*> include_stack_;
Assoc<String, Identifier*> *identifier_assoc_p_;
Keyword_table * keytable_p_;
int errorlevel_i_;
/* *************** */
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;
+ void print_declarations(bool init_b) const;
+
bool note_state_b() const;
bool lyric_state_b() const;
};
-extern My_lily_lexer *lexer;
-
#endif