source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <strstream.h>
#include "scope.hh"
static Keyword_ent the_key_tab[]={
+ {"absdynamic", ABSDYNAMIC},
{"accepts", ACCEPTS},
{"bar", BAR},
{"cadenza", CADENZA},
- {"clear", CLEAR},
{"clef", CLEF},
{"cm", CM_T},
{"consists", CONSISTS},
- {"contains", CONTAINS},
{"duration", DURATION},
- {"absdynamic", ABSDYNAMIC},
+ {"font", FONT},
+ {"grouping", GROUPING},
+ {"header", HEADER},
{"in", IN_T},
- {"translator", TRANSLATOR},
- {"type", TYPE},
- {"lyric", LYRIC},
+ {"lyrics", LYRICS},
{"key", KEY},
- {"melodic" , MELODIC},
- {"melodic_request", MELODIC_REQUEST},
- {"meter", METER},
+ {"keysignature", KEYSIGNATURE},
+ {"mark", MARK},
+ {"musicalpitch", MUSICAL_PITCH},
+ {"time", TIME_T},
+ {"times", TIMES},
{"midi", MIDI},
{"mm", MM_T},
- {"multi", MULTI},
- {"header", HEADER},
+ {"name", NAME},
{"notenames", NOTENAMES},
- {"octave", OCTAVE},
+ {"notes" , NOTES},
{"output", OUTPUT},
{"partial", PARTIAL},
{"paper", PAPER},
{"penalty", PENALTY},
{"property", PROPERTY},
{"pt", PT_T},
+ {"relative", RELATIVE},
+ {"remove", REMOVE},
+ {"scm", SCHEME},
{"score", SCORE},
{"script", SCRIPT},
{"shape", SHAPE},
{"skip", SKIP},
- {"staff", STAFF},
{"table", TABLE},
{"spandynamic", SPANDYNAMIC},
{"symboltables", SYMBOLTABLES},
{"tempo", TEMPO},
- {"texid", TEXID},
- {"textstyle", TEXTSTYLE},
+ {"translator", TRANSLATOR},
+ {"type", TYPE},
{"transpose", TRANSPOSE},
{"version", VERSION},
- {"grouping", GROUPING},
{0,0}
};
My_lily_lexer::lookup_identifier (String s)
{
for (int i = scope_l_arr_.size (); i--; )
- if (scope_l_arr_[i]->elt_b (s))
+ if (scope_l_arr_[i]->elem_b (s))
return (*scope_l_arr_[i])[s];
return 0;
}
void
My_lily_lexer::set_identifier (String name_str, Identifier* i, bool unique_b)
{
- Identifier *old = lookup_identifier (name_str);
+ Identifier *old =0;
+ if (scope_l_arr_.top ()->elem_b (name_str))
+ old = scope_l_arr_.top ()->elem(name_str);
+
+
if (old)
{
+#if 0
if (unique_b)
- old->warning(_("redeclaration of \\") + name_str);
+ old->warning(_f ("redeclaration of `\\%s\'", name_str));
+#endif
delete old;
}
+ if (lookup_keyword (name_str) >= 0)
+ {
+ warning ( _f ("Identifier name is a keyword (`%s')", name_str));
+ }
+
(*scope_l_arr_.top ())[name_str] = i;
}
{
delete keytable_p_;
delete toplevel_scope_p_ ;
-
-
delete note_tab_p_;
}
{
for (int i=scope_l_arr_.size (); i--; )
{
- DOUT << "Scope no. " << i << "\n";
+ DOUT << "Scope no. " << i << '\n';
scope_l_arr_[i]->print ();
}
}
{
if (include_stack_.empty())
{
- *mlog << _("error at EOF") << s << '\n';
+ *mlog << _f ("error at EOF: %s", s) << endl;
}
else
{
}
}
-Melodic_req*
-My_lily_lexer::lookup_melodic_req_l (String s)
+Musical_pitch
+My_lily_lexer::lookup_pitch (String s)
{
- return note_tab_p_->get_l (s);
+ return (*note_tab_p_)[s];
+}
+
+bool
+My_lily_lexer::notename_b (String s) const
+{
+ return note_tab_p_->elem_b (s);
}
void
-My_lily_lexer::add_notename (String s, Melodic_req *p)
+My_lily_lexer::add_notename (String s, Musical_pitch p)
{
- note_tab_p_->add (s,p);
+ (*note_tab_p_)[s] = p;
}
void
-My_lily_lexer::clear_notenames()
+My_lily_lexer::set_notename_table(Notename_table *p)
{
delete note_tab_p_;
- note_tab_p_ = new Notename_table;
+ note_tab_p_ = p;
}
char