+ Includable_lexer::new_input (str, d, ss);
+}
+
+void
+Lily_lexer::new_input (string str, Sources *ss)
+{
+ if (is_main_input_ && be_safe_global)
+ {
+ LexerError (_ ("include files are not allowed in safe mode").c_str ());
+ return;
+ }
+
+ Includable_lexer::new_input (str, ss);
+}
+
+// PATH is either a single symbol (or string) or a list of symbols
+// giving the path to a nested property. A symbol is treated the same
+// as a list of length 1.
+void
+Lily_lexer::set_identifier (SCM path, SCM val)
+{
+ SCM sym = path;
+ if (scm_is_string (path))
+ sym = scm_string_to_symbol (path);
+ else if (scm_is_pair (path))
+ {
+ sym = scm_car (path);
+ path = scm_cdr (path);
+ }
+