]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/lily-lexer.cc
*** empty log message ***
[lilypond.git] / lily / lily-lexer.cc
index df238ef784c9b92179c8788e837f82bb86a7f5f4..559d5340a3af0ef9117fcc00e242d863018c71d1 100644 (file)
@@ -19,7 +19,6 @@
 #include "source-file.hh"
 #include "main.hh"
 #include "moment.hh"
-#include "ly-module.hh"
 
 static Keyword_ent the_key_tab[] = {
   {"accepts", ACCEPTS},
@@ -87,13 +86,12 @@ static Keyword_ent the_key_tab[] = {
 Lily_lexer::Lily_lexer (Sources *sources)
 {
   keytable_ = new Keyword_table (the_key_tab);
-  encoding_ = SCM_EOL;
   chordmodifier_tab_ = SCM_EOL;
   pitchname_tab_stack_ = SCM_EOL; 
   sources_ = sources;
   scopes_ = SCM_EOL;
   error_level_ = 0; 
-  main_input_b_ = false;
+  is_main_input_ = false;
 
   smobify_self ();
   
@@ -106,13 +104,12 @@ Lily_lexer::Lily_lexer (Lily_lexer const &src)
   : Includable_lexer ()
 {
   keytable_ = (src.keytable_) ? new Keyword_table (*src.keytable_) : 0;
-  encoding_ = src.encoding_;
   chordmodifier_tab_ = src.chordmodifier_tab_;
   pitchname_tab_stack_ = src.pitchname_tab_stack_;
   sources_ = src.sources_;
   
   error_level_ = src.error_level_; 
-  main_input_b_ = src.main_input_b_;
+  is_main_input_ = src.is_main_input_;
 
   scopes_ = SCM_EOL;
   
@@ -137,13 +134,6 @@ Lily_lexer::~Lily_lexer ()
   delete keytable_;
 }
 
-SCM
-Lily_lexer::encoding () const
-{
-  return encoding_ ;
-}
-
-
 void
 Lily_lexer::add_scope (SCM module)
 {
@@ -199,7 +189,7 @@ Lily_lexer::start_main_input ()
   new_input (main_input_name_, sources_);
   
   /* Do not allow \include in --safe-mode */
-  allow_includes_b_ = allow_includes_b_ && !safe_global_b;
+  allow_includes_b_ = allow_includes_b_ && !be_safe_global;
 
   scm_module_define (scm_car (scopes_),
                     ly_symbol2scm ("input-file-name"),
@@ -239,7 +229,7 @@ Lily_lexer::LexerError (char const *s)
   else
     {
       error_level_ |= 1;
-      Input spot (get_source_file (), here_str0 ());
+      Input spot (*lexloc);
       spot.error (s);
     }
 }
@@ -264,8 +254,7 @@ Lily_lexer::escaped_char (char c) const
 Input
 Lily_lexer::here_input () const
 {
-  Source_file * f = get_source_file ();
-  return Input (f, (char*)here_str0 ());
+  return Input(*lexloc);
 }
 
 void
@@ -274,15 +263,20 @@ Lily_lexer::prepare_for_next_token ()
   last_input_ = here_input ();
 }
 
+/**
+  Since we don't create the buffer state from the bytes directly, we
+  don't know about the location of the lexer. Add this as a
+  YY_USER_ACTION */
 void
-Lily_lexer::set_encoding (String s)
+Lily_lexer::add_lexed_char (int count)
 {
-  if (s.length ())
-    encoding_ = ly_symbol2scm (s.to_str0 ());
-  else
-    encoding_ = SCM_EOL;
+  lexloc->source_file_ = get_source_file ();
+  lexloc->start_ = here_str0 ();
+  lexloc->end_ = lexloc->start_ + count;
+  char_count_stack_.top () += count;
 }
 
+
 #include "ly-smobs.icc"
 
 IMPLEMENT_SMOBS (Lily_lexer);
@@ -296,8 +290,7 @@ Lily_lexer::mark_smob (SCM s)
 
   scm_gc_mark (lexer->chordmodifier_tab_);
   scm_gc_mark (lexer->pitchname_tab_stack_);
-  scm_gc_mark (lexer->scopes_);
-  return lexer->encoding_;
+  return lexer->scopes_;
 }
 
 int