#include <stdio.h>
#include <ctype.h>
#include <iostream.h> /* gcc 3.0 */
+#include <errno.h>
+
#include "score.hh"
#include "lily-guile.hh"
*/
+
+SCM scan_fraction (String);
+
%}
%option c++
AA {A}|_
N [0-9]
AN {AA}|{N}
-PUNCT [?!:']
+PUNCT [?!:'`]
ACCENT \\[`'"^]
NATIONAL [\001-\006\021-\027\031\036\200-\377]
TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
ALPHAWORD {A}+
DIGIT {N}
UNSIGNED {N}+
+FRACTION {N}+\/{N}+
INT -?{UNSIGNED}
REAL ({INT}\.{N}*)|(-?\.{N}+)
KEYWORD \\{WORD}
{NOTECOMMAND} {
return scan_escaped_word (YYText () + 1);
}
+ {FRACTION} {
+ yylval.scm = scan_fraction (YYText ());
+ return FRACTION;
+ }
{DIGIT} {
yylval.i = String_convert::dec2_i (String (YYText ()));
\" {
start_quote ();
}
+ {FRACTION} {
+ yylval.scm = scan_fraction (YYText ());
+ return FRACTION;
+ }
{UNSIGNED} {
yylval.i = String_convert::dec2_i (String (YYText ()));
return UNSIGNED;
{NOTECOMMAND} {
return scan_escaped_word (YYText () + 1);
}
+ {FRACTION} {
+ yylval.scm = scan_fraction (YYText ());
+ return FRACTION;
+ }
{UNSIGNED} {
yylval.i = String_convert::dec2_i (String (YYText ()));
return UNSIGNED;
return E_SMALLER;
case '!':
return E_EXCLAMATION;
+ case '\\':
+ return E_BACKSLASH;
case '(':
return E_OPEN;
case ')':
+Lilypond_version oldest_version ("1.3.59");
+
+void
+print_lilypond_versions (ostream &os)
+{
+ os << _f ("Oldest supported input version: %s", oldest_version.str ())
+ << endl;
+}
+
bool
valid_version_b (String s)
return s;
}
+
+/*
+Convert "NUM/DEN" into a '(NUM . DEN) cons.
+*/
+SCM
+scan_fraction (String frac)
+{
+ int i = frac.index_i ('/');
+ int l = frac.length_i ();
+ String left = frac.left_str (i);
+ String right = frac.right_str (l - i - 1);
+
+ int n = String_convert::dec2_i (left);
+ int d = String_convert::dec2_i (right);
+ return gh_cons (gh_int2scm (n), gh_int2scm (d));
+}
+