#include "lily-guile.hh"
#include "string.hh"
#include "string-convert.hh"
-#include "my-lily-lexer.hh"
+#include "lily-lexer.hh"
#include "interval.hh"
#include "lily-guile.hh"
#include "parser.hh"
void strip_trailing_white (String&);
void strip_leading_white (String&);
String lyric_fudge (String s);
-int music_head_type (SCM);
+int music_function_type (SCM);
SCM lookup_markup_command (String s);
bool is_valid_version (String s);
%option noyywrap
%option nodefault
%option debug
-%option yyclass="My_lily_lexer"
+%option yyclass="Lily_lexer"
%option stack
%option never-interactive
%option warn
progress_indication ("\n");
progress_indication (_f ("input renamed to: `%s'", s.to_str0 ()));
progress_indication ("\n");
- scm_module_define (ly_car (scopes_),
+ scm_module_define (scm_car (scopes_),
ly_symbol2scm ("input-file-name"),
scm_makfrom0str (s.to_str0()));
{
start_main_input ();
main_input_b_ = true;
- SCM nn = lookup_identifier ("pitchnames");
- push_note_state (alist_to_hashq (nn));
}
else
error (_ ("\\maininput not allowed outside init files"));
s = s.left_string (s.length () - 1);
SCM sid = lookup_identifier (s);
- if (ly_c_string_p (sid)) {
+ if (scm_is_string (sid)) {
new_input (ly_scm2string (sid), sources_);
yy_pop_state ();
} else {
\> {
return '>';
}
+ \\score {
+ return SCORE;
+ }
{MARKUPCOMMAND} {
String str (YYText () + 1);
SCM s = lookup_markup_command (str);
- if (ly_c_pair_p (s) && ly_c_symbol_p (ly_cdr (s)) ) {
- yylval.scm = ly_car(s);
- SCM tag = ly_cdr(s);
+ if (scm_is_pair (s) && scm_is_symbol (scm_cdr (s)) ) {
+ yylval.scm = scm_car(s);
+ SCM tag = scm_cdr(s);
if (tag == ly_symbol2scm("markup0"))
return MARKUP_HEAD_MARKUP0;
if (tag == ly_symbol2scm("empty"))
%%
void
-My_lily_lexer::push_chord_state (SCM tab)
+Lily_lexer::push_chord_state (SCM tab)
{
pitchname_tab_stack_ = scm_cons (tab, pitchname_tab_stack_);
yy_push_state (chords);
}
void
-My_lily_lexer::push_figuredbass_state ()
+Lily_lexer::push_figuredbass_state ()
{
yy_push_state (figures);
}
void
-My_lily_lexer::push_initial_state ()
+Lily_lexer::push_initial_state ()
{
yy_push_state (INITIAL);
}
void
-My_lily_lexer::push_lyric_state ()
+Lily_lexer::push_lyric_state ()
{
yy_push_state (lyrics);
}
void
-My_lily_lexer::push_markup_state ()
+Lily_lexer::push_markup_state ()
{
yy_push_state (markup);
}
void
-My_lily_lexer::push_note_state (SCM tab)
+Lily_lexer::push_note_state (SCM tab)
{
pitchname_tab_stack_ = scm_cons (tab, pitchname_tab_stack_);
yy_push_state (notes);
}
void
-My_lily_lexer::pop_state ()
+Lily_lexer::pop_state ()
{
if (YYSTATE == notes || YYSTATE == chords)
- pitchname_tab_stack_ = ly_cdr (pitchname_tab_stack_);
+ pitchname_tab_stack_ = scm_cdr (pitchname_tab_stack_);
yy_pop_state ();
}
int
-My_lily_lexer::identifier_type (SCM sid)
+Lily_lexer::identifier_type (SCM sid)
{
int k = try_special_identifiers (&yylval.scm , sid);
return k >= 0 ? k : SCM_IDENTIFIER;
int
-My_lily_lexer::scan_escaped_word (String str)
+Lily_lexer::scan_escaped_word (String str)
{
// use more SCM for this.
}
int
-My_lily_lexer::scan_bare_word (String str)
+Lily_lexer::scan_bare_word (String str)
{
SCM sym = ly_symbol2scm (str.to_str0 ());
if ((YYSTATE == notes) || (YYSTATE == chords)) {
SCM handle = SCM_BOOL_F;
- if (ly_c_pair_p (pitchname_tab_stack_))
- handle = scm_hashq_get_handle (ly_car (pitchname_tab_stack_), sym);
+ if (scm_is_pair (pitchname_tab_stack_))
+ handle = scm_hashq_get_handle (scm_car (pitchname_tab_stack_), sym);
- if (ly_c_pair_p (handle)) {
- yylval.scm = ly_cdr (handle);
+ if (scm_is_pair (handle)) {
+ yylval.scm = scm_cdr (handle);
if (unsmob_pitch (yylval.scm))
return (YYSTATE == notes) ? NOTENAME_PITCH : TONICNAME_PITCH;
- else if (ly_c_symbol_p (yylval.scm))
+ else if (scm_is_symbol (yylval.scm))
return DRUM_PITCH;
}
else if ((handle = scm_hashq_get_handle (chordmodifier_tab_, sym))!= SCM_BOOL_F)
{
- yylval.scm = ly_cdr (handle);
+ yylval.scm = scm_cdr (handle);
return CHORD_MODIFIER;
}
}
}
bool
-My_lily_lexer::is_note_state () const
+Lily_lexer::is_note_state () const
{
return YY_START == notes;
}
bool
-My_lily_lexer::is_chord_state () const
+Lily_lexer::is_chord_state () const
{
return YY_START == chords;
}
bool
-My_lily_lexer::is_lyric_state () const
+Lily_lexer::is_lyric_state () const
{
return YY_START == lyrics;
}
bool
-My_lily_lexer::is_figure_state () const
+Lily_lexer::is_figure_state () const
{
return YY_START == figures;
}
int
music_function_type (SCM func)
{
- SCM type= scm_object_property (func, ly_symbol2scm ("music-head-signature-keyword"));
+ SCM type= scm_object_property (func, ly_symbol2scm ("music-function-signature-keyword"));
if (type == ly_symbol2scm ("scm"))
{
return MUSIC_FUNCTION_SCM;
{
return MUSIC_FUNCTION_SCM_MUSIC;
}
+ else if (type == ly_symbol2scm ("scm-scm"))
+ {
+ return MUSIC_FUNCTION_SCM_SCM;
+ }
else if (type == ly_symbol2scm ("music-music"))
{
return MUSIC_FUNCTION_MUSIC_MUSIC;
{
return MUSIC_FUNCTION_SCM_SCM_MUSIC;
}
+ else if (type == ly_symbol2scm ("noarg"))
+ {
+ return MUSIC_FUNCTION;
+ }
else
- assert (false);
+ {
+ /* TODO: print location */
+ error ("Can not find signature for music function.");
+ }
- return MUSIC_FUNCTION_SCM_MUSIC_MUSIC;
+ return MUSIC_FUNCTION_SCM;
}