X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Flexer%2Fq2c.c;h=f53ccfc33c181ad48cba48705f35e23d5cb2d552;hb=9ade26c8349b4434008c46cf09bc7473ec743972;hp=c03b6b21da6b4d16018d5a1768492440f05be614;hpb=691c25e36fd1ee722dd35419d6110e3876b99f9c;p=pspp-builds.git diff --git a/src/language/lexer/q2c.c b/src/language/lexer/q2c.c index c03b6b21..f53ccfc3 100644 --- a/src/language/lexer/q2c.c +++ b/src/language/lexer/q2c.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2008, 2010 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2008, 2010, 2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1422,12 +1422,14 @@ make_match (const char *t) "|| lex_match_id (lexer, \"FALSE\"))"); else if (isdigit ((unsigned char) t[0])) sprintf (s, "lex_match_int (lexer, %s)", t); - else + else if (strchr (t, hyphen_proxy)) { char *c = unmunge (t); - sprintf (s, "lex_match_hyphenated_word (lexer, \"%s\")", c); + sprintf (s, "lex_match_phrase (lexer, \"%s\")", c); free (c); } + else + sprintf (s, "lex_match_id (lexer, \"%s\")", t); return s; } @@ -1496,7 +1498,7 @@ dump_specifier_parse (const specifier *spec, const subcommand *sbc) } else { - dump (1, "if (!lex_match (lexer, T_RPAREN))"); + dump (1, "if (!lex_match (lexer, T_LPAREN))"); dump (1, "{"); dump (0, "msg (SE, _(\"`(' expected after %s " "specifier of %s subcommand.\"));", @@ -1542,7 +1544,7 @@ dump_specifier_parse (const specifier *spec, const subcommand *sbc) dump (0, "goto lossage;"); dump (-1, "}"); dump (-1, "free (p->%s%s);", sbc->prefix, st_lower (s->valname)); - dump (0, "p->%s%s = xstrdup (ds_cstr (lex_tokstr (lexer)));", + dump (0, "p->%s%s = ss_xstrdup (ss_tokss (lexer));", sbc->prefix, st_lower (s->valname)); } else @@ -1705,7 +1707,7 @@ dump_subcommand (const subcommand *sbc) outdent (); if (sbc->restriction) { - dump (0, "x = ds_length (lex_tokstr (lexer));"); + dump (0, "x = ss_length (lex_tokss (lexer));"); dump (1, "if (!(%s))", sbc->restriction); dump (1, "{"); dump (0, "msg (SE, _(\"String for %s must be %s.\"));", @@ -1715,7 +1717,7 @@ dump_subcommand (const subcommand *sbc) outdent (); } dump (0, "free(p->s_%s);", st_lower(sbc->name) ); - dump (0, "p->s_%s = ds_xstrdup (lex_tokstr (lexer));", + dump (0, "p->s_%s = ss_xstrdup (lex_tokss (lexer));", st_lower (sbc->name)); dump (0, "lex_get (lexer);"); if (sbc->restriction) @@ -1833,13 +1835,13 @@ dump_parser (int persistent) { if (def->type == SBC_VARLIST) dump (1, "if (lex_token (lexer) == T_ID " - "&& dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) != NULL " - "&& lex_look_ahead (lexer) != T_EQUALS)"); + "&& dict_lookup_var (dataset_dict (ds), lex_tokcstr (lexer)) != NULL " + "&& lex_next_token (lexer, 1) != T_EQUALS)"); else { dump (0, "if ((lex_token (lexer) == T_ID " - "&& dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) " - "&& lex_look_ahead () != T_EQUALS)"); + "&& dict_lookup_var (dataset_dict (ds), lex_tokcstr (lexer)) " + "&& lex_next_token (lexer, 1) != T_EQUALS)"); dump (1, " || token == T_ALL)"); } dump (1, "{"); @@ -2126,17 +2128,19 @@ main (int argc, char *argv[]) indent = 0; dump (0, "#include "); - dump (0, "#include "); - dump (0, "#include "); - dump (0, "#include "); - dump (0, "#include "); - dump (0, "#include "); - dump (0, "#include "); - dump (0, "#include "); - dump (0, "#include "); + dump_blank_line (0); + + dump (0, "#include \"data/settings.h\""); + dump (0, "#include \"data/variable.h\""); + dump (0, "#include \"language/lexer/lexer.h\""); + dump (0, "#include \"language/lexer/subcommand-list.h\""); + dump (0, "#include \"language/lexer/variable-parser.h\""); + dump (0, "#include \"libpspp/assertion.h\""); + dump (0, "#include \"libpspp/message.h\""); + dump (0, "#include \"libpspp/str.h\""); dump_blank_line (0); - dump (0, "#include \"xalloc.h\""); + dump (0, "#include \"gl/xalloc.h\""); dump_blank_line (0); dump (0, "#include \"gettext.h\"");