annotate lib-src/make-msgfile.lex @ 4953:304aebb79cd3

function renamings to track names of char typedefs -------------------- ChangeLog entries follow: -------------------- man/ChangeLog addition: 2010-01-27 Ben Wing <ben@xemacs.org> * internals/internals.texi (lrecords): * internals/internals.texi (The DFC API): * internals/internals.texi (Conversion to and from External Data): * internals/internals.texi (Mule-izing Code): * internals/internals.texi (Pervasive changes throughout XEmacs sources): * internals/internals.texi (Ben's README): * internals/internals.texi (Future Work -- Localized Text/Messages): * emodules.texi (Defining Variables): Rename: write_c_string -> write_cistring build_intstring -> build_istring build_string -> build_cistring build_ext_string -> build_extstring make_ext_string -> make_extstring buffer_insert_c_string -> buffer_insert_ascstring intern_int -> intern_istring See comment in src/ChangeLog about this. modules/ChangeLog addition: 2010-01-27 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c (print_pgconn): * postgresql/postgresql.c (print_pgresult): * postgresql/postgresql.c (Fpq_conn_defaults): * postgresql/postgresql.c (Fpq_pgconn): * postgresql/postgresql.c (Fpq_res_status): * postgresql/postgresql.c (Fpq_result_error_message): * postgresql/postgresql.c (Fpq_fname): * postgresql/postgresql.c (Fpq_get_value): * postgresql/postgresql.c (Fpq_cmd_status): * postgresql/postgresql.c (Fpq_cmd_tuples): * postgresql/postgresql.c (Fpq_notifies): * postgresql/postgresql.c (Fpq_get_line): * postgresql/postgresql.c (Fpq_get_line_async): * postgresql/postgresql.c (FROB): * postgresql/postgresql.c (init_postgresql_from_environment): * ldap/eldap.c: * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * canna/canna_api.c: * canna/canna_api.c (make_euc_string): Rename: write_c_string -> write_cistring build_intstring -> build_istring build_string -> build_cistring build_ext_string -> build_extstring make_ext_string -> make_extstring buffer_insert_c_string -> buffer_insert_ascstring intern_int -> intern_istring See comment in src/ChangeLog about this. src/ChangeLog addition: 2010-01-27 Ben Wing <ben@xemacs.org> * .gdbinit.in.in: * README: * abbrev.c (write_abbrev): * abbrev.c (describe_abbrev): * alloc.c (make_extstring): * alloc.c (build_istring): * alloc.c (build_cistring): * alloc.c (build_ascstring): * alloc.c (build_extstring): * alloc.c (build_msg_istring): * alloc.c (build_defer_istring): * buffer.c (Fgenerate_new_buffer_name): * buffer.c (init_buffer_2): * console-tty.c (tty_init_console): * console-x.c (get_display_arg_connection): * console-x.c (x_perhaps_init_unseen_key_defaults): * database.c (dbm_map): * database.c (dbm_get): * database.c (berkdb_get): * database.c (berkdb_map): * device-gtk.c (FROB_PIXMAP): * device-gtk.c (Fgtk_style_info): * device-msw.c (msprinter_default_printer): * device-msw.c (sync_printer_with_devmode): * device-x.c (coding_system_of_xrm_database): * device-x.c (x_init_device): * device-x.c (signal_if_x_error): * device-x.c (Fx_get_resource): * device-x.c (Fx_server_vendor): * device-x.c (Fx_get_font_path): * dialog-x.c (maybe_run_dbox_text_callback): * doc.c (extract_object_file_name): * doc.c (unparesseuxify_doc_string): * doc.c (get_doc_string): * doc.c (get_object_file_name): * doc.c (Fdocumentation): * doc.c (Fsnarf_documentation): * doc.c (Fsubstitute_command_keys): * editfns.c (init_editfns): * editfns.c (Ftemp_directory): * editfns.c (Fuser_login_name): * editfns.c (Fuser_real_login_name): * editfns.c (Fuser_home_directory): * editfns.c (Fformat_time_string): * editfns.c (Fcurrent_time_string): * editfns.c (Fcurrent_time_zone): * emacs.c: * emacs.c (main_1): * emodules.c (Flist_modules): * emodules.c (emodules_load): * emodules.c (emodules_doc_sym): * emodules.c (vars_of_module): * event-Xt.c (x_has_keysym): * event-gtk.c (emacs_gtk_format_magic_event): * event-gtk.c (dragndrop_data_received): * event-gtk.c (gtk_reset_key_mapping): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * faces.c (complex_vars_of_faces): * file-coding.c (find_coding_system): * file-coding.c (setup_eol_coding_systems): * file-coding.c (make_coding_system_1): * file-coding.c (snarf_coding_system): * fileio.c: * fileio.c (lisp_strerror): * fileio.c (Ffile_name_directory): * fileio.c (Ffile_name_as_directory): * fileio.c (Fdirectory_file_name): * fileio.c (if): * fileio.c (Ffile_symlink_p): * fileio.c (Fencrypt_string): * fileio.c (Fdecrypt_string): * filelock.c (lock_file): * filelock.c (Ffile_locked_p): * floatfns.c (matherr): * font-mgr.c (build_fcapi_string): * font-mgr.c (make_xlfd_font_regexp): * frame-msw.c (mswindows_window_id): * frame-msw.c (mswindows_frame_property): * frame-x.c: * frame-x.c (color_to_string): * frame-x.c (maybe_set_frame_title_format): * frame-x.c (x_cde_transfer_callback): * frame-x.c (Fx_window_id): * glade.c (connector): * glade.c (Fglade_xml_textdomain): * glade.c (syms_of_glade): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (font_instantiate): * glyphs-gtk.c (BUILD_GLYPH_INST): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (font_instantiate): * glyphs-x.c (x_widget_property): * glyphs-x.c (BUILD_GLYPH_INST): * glyphs.c (print_image_instance): * glyphs.c (bitmap_to_lisp_data): * glyphs.c (pixmap_to_lisp_data): * gpmevent.c (turn_off_gpm): * gpmevent.c (Fgpm_enabled_p): * gpmevent.c (Fgpm_enable): * gtk-glue.c (__make_string_mapper): * gtk-glue.c (xemacs_gtklist_to_list): * gtk-xemacs.c (FROB_FACE): * gtk-xemacs.c (xemacs_gtk_convert_color): * hpplay.c (player_error_internal): * hpplay.c (myHandler): * insdel.c (buffer_insert_ascstring_1): * insdel.h: * insdel.h (buffer_insert_ascstring): * intl.c (Fcurrent_locale): * intl.c (Fset_current_locale): * keymap.c (make_key_description): * keymap.c (Ftext_char_description): * keymap.c (describe_command): * keymap.c (describe_map): * lisp.h: * lread.c: * lread.c (locate_file_in_directory_mapper): * lread.c (locate_file_construct_suffixed_files_mapper): * mule-charset.c (Fmake_charset): * nt.c (Fmswindows_short_file_name): * nt.c (Fmswindows_long_file_name): * objects-gtk.c (__get_gtk_font_truename): * objects-gtk.c (__gtk_font_list_internal): * objects-msw.c (font_enum_callback_2): * objects-msw.c (create_hfont_from_font_spec): * objects-msw.c (mswindows_font_list): * objects-msw.c (mswindows_font_spec_matches_charset_stage_2): * objects-tty.c (tty_initialize_font_instance): * objects-x.c (x_font_truename): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_instance_properties): * objects-x.c (x_font_list): * print.c (write_cistring): * print.c (print_vector_internal): * print.c (print_cons): * process-nt.c (nt_canonicalize_host_name): * process-unix.c (unix_create_process): * process-unix.c (unix_canonicalize_host_name): * process.c (status_message): * process.c (status_notify): * process.c (init_xemacs_process): * process.c (syms_of_process): * redisplay-tty.c (term_get_fkeys_1): * redisplay-tty.c (CONDITIONAL_REASSIGN): * search.c (compile_pattern_1): * select-common.h (selection_data_to_lisp_data): * select-gtk.c (atom_to_symbol): * select-gtk.c (PROCESSING_GTK_CODE): * select-msw.c (mswindows_get_foreign_selection): * select-x.c (x_atom_to_symbol): * select-x.c (Fx_get_cutbuffer_internal): * symbols.c (intern_istring): * symbols.c (intern): * symbols.c (intern_converting_underscores_to_dashes): * symbols.c (Fintern): * sysdep.c (init_system_name): * sysdll.c (dll_error): * sysdll.c (dll_open): * syswindows.h: * syswindows.h (build_tstr_string): * tests.c (DFC_CHECK_LENGTH): * tests.c (DFC_CHECK_CONTENT): * tests.c (DFC_RESULT_PASS): * tests.c (Ftest_data_format_conversion): * text.c: * text.c (new_dfc_convert_now_damn_it): * text.h: * text.h (build_wext_string): * tooltalk.c (tt_build_c_string): * tooltalk.c (Ftooltalk_default_procid): * tooltalk.c (Ftooltalk_default_session): * tooltalk.c (init_tooltalk): * ui-byhand.c (Fgtk_clist_get_text): * ui-byhand.c (Fgtk_clist_get_pixtext): * ui-byhand.c (Fgtk_label_get): * ui-byhand.c (Fgtk_notebook_query_tab_label_packing): * ui-gtk.c (emacs_gtk_object_printer): * ui-gtk.c (emacs_gtk_boxed_printer): * ui-gtk.c (gtk_type_to_lisp): * ui-gtk.c (symbol_to_enum): * ui-gtk.c (enum_to_symbol): * unexaix.c (report_error): * unexaix.c (ERROR0): * unexec.c (report_error): * unexec.c (ERROR0): * unicode.c (unicode_to_ichar): * win32.c (tstr_to_local_file_format): * win32.c (Fmswindows_cygwin_to_win32_path): * win32.c (struct read_link_hash): * xemacs.def.in.in: Rename: write_c_string -> write_cistring build_intstring -> build_istring build_string -> build_cistring build_ext_string -> build_extstring make_ext_string -> make_extstring buffer_insert_c_string -> buffer_insert_ascstring intern_int -> intern_istring These functions have been renamed so that the naming harmonizes with the typedefs for strings: `cistring' along with CIbyte *, `istring' along with Ibyte *, `extstring' along with Extbyte *, `ascstring' along with Ascbyte *. Also make buffer_insert_ascstring take Ascbyte * and assert that its argument is ASCII.
author Ben Wing <ben@xemacs.org>
date Wed, 27 Jan 2010 00:35:36 -0600
parents c50b0b3c7b8d
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 %{
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 /* This is a Lex file. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 /* Localizable-message snarfing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 Copyright (C) 1994, 1995 Amdahl Corporation.
4950
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
7 Copyright (C) 2010 Ben Wing.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 XEmacs is free software; you can redistribute it and/or modify
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 it under the terms of the GNU General Public License as published by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 the Free Software Foundation; either version 2, or (at your option)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 any later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 XEmacs is distributed in the hope that it will be useful,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 GNU General Public License for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 along with XEmacs; see the file COPYING. If not, write to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 Boston, MA 02111-1307, USA. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 /* Written by Ben Wing, November 1994. Some code based on earlier
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 make-msgfile.c. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
4950
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
29 /* #### A comment:
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
30
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
31 Directly writing a lex file isn't right. We want to be able to specify
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
32 functions to snarf in simpler ways, e.g.
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
33
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
34 BEGIN_C_FUNCS
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
35
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
36 weird_doc (arg, snarf, snarf, arg);
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
37 signal_error (arg, snarf, arg);
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
38 etc.
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
39
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
40 END_C_FUNCS
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
41
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
42 In this case, `arg' indicates an arbitrary argument and `snarf' indicates
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
43 that when a quoted string is seen, it should be snarfed.
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
44
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
45 Then either we write a program to read this script and directly snarf
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
46 messages, or we write a program to convert the script into lex.
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
47
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
48 --ben, 1/26/10 */
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
49
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 440
diff changeset
50 /* See text.c for a proposal about how this whole system should work. */
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 440
diff changeset
51
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 /* Note: there is still much work to be done on this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 1) Definition of Arg below won't handle a generalized argument
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 as might appear in a function call. This is fine for DEFUN
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 and friends, because only simple arguments appear there; but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 it might run into problems if Arg is used for other sorts
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 of functions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 2) snarf() should be modified so that it doesn't output null
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 strings and non-textual strings (see the comment at the top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 of make-msgfile.c).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 3) parsing of (insert) should snarf all of the arguments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 4) need to add set-keymap-prompt and deal with gettext of that.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 5) parsing of arguments should snarf all strings anywhere within
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 the arguments, rather than just looking for a string as the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 argument. This allows if statements as arguments to get parsed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 6) begin_paren_counting() et al. should handle recursive entry.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 7) handle set-window-buffer and other such functions that take
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 a buffer as the other-than-first argument.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 8) there is a fair amount of work to be done on the C code.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 Look through the code for #### comments associated with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 '#ifdef I18N3' or with an I18N3 nearby.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 9) Deal with `get-buffer-process' et al.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 10) Many of the changes in the Lisp code marked
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 'rewritten for I18N3 snarfing' should be undone once (5) is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 implemented.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 11) Go through the Lisp code in prim and make sure that all
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 strings are gettexted as necessary. This may reveal more
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 things to implement.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 12) Do the equivalent of (8) for the Lisp code.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 13) Deal with parsing of menu specifications.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 --ben
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 /* Some notes:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 -- {Arg} below could get confused by commas inside of quotes.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 -- {LispToken} below can match some things that are not tokens (e.g.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 numbers) but for all practical purposes it should be fine.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 #include <stdio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 int snarf_return_state;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 %}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 %p 6000
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 %e 2000
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 %n 1000
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 %a 4000
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 %s C_QUOTE C_COMMENT LQUO LCOM
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 %s CSNARF LSNARF
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 %s DO_C DO_LISP DEFUN
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 %s DEFUN2 DEFUN3 LDEF
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108
4950
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
109 W [ \t\n]
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
110 Any .|\n
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
111 Q \"
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
112 Cm ,
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
113 NQ [^\"]
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
114 NT [^A-Za-z_0-9]
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
115 LP "("
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
116 RP ")"
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
117 NQP [^\"()]
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
118 NQPCm [^,\"()]
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
119 BS "\\"
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
120 Esc ({BS}{Any})
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
121 Wh ({W}*)
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
122 LCom (;({Esc}|.)*)
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
123 LWh ({W}|{LCom})*
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
124 Open {Wh}{LP}
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
125 OpWQ {Open}{Wh}{Q}
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
126 String {Q}({Esc}|{NQ})*{Q}
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
127 ParenExpr5 "("({String}|{NQP})*")"
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
128 ParenExpr4 "("({String}|{NQP}|{ParenExpr5})*")"
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
129 ParenExpr3 "("({String}|{NQP}|{ParenExpr4})*")"
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
130 ParenExpr2 "("({String}|{NQP}|{ParenExpr3})*")"
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
131 ParenExpr "("({String}|{NQP}|{ParenExpr5})*")"
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
132 Arg ({NQPCm}|{String}|{ParenExpr})*
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
133 ArgCm {Arg}{Cm}
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
134 StringArg {Wh}{String}{Wh}","
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
135 OpenString {Open}{StringArg}
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
136 LispToken ({Esc}|[-A-Za-z0-9!@$%^&*_=+|{}`~,<.>/?])+
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 %%
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 <DO_C>{NT}"GETTEXT"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 <DO_C>{NT}"DEFER_GETTEXT"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 <DO_C>{NT}"build_translated_string"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 <DO_C>{NT}"insert_string"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 <DO_C>{NT}"message"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 <DO_C>{NT}"warn_when_safe"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 <DO_C>{NT}"error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 <DO_C>{NT}"continuable_error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 <DO_C>{NT}"signal_simple_error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 <DO_C>{NT}"signal_simple_error_2"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 <DO_C>{NT}"signal_simple_continuable_error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 <DO_C>{NT}"signal_simple_continuable_error_2"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 <DO_C>{NT}"report_file_error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 <DO_C>{NT}"signal_file_error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 <DO_C>{NT}"signal_double_file_error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 <DO_C>{NT}"signal_double_file_error_2"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 <DO_C>{NT}"syntax_error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 <DO_C>{NT}"continuable_syntax_error"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 <DO_C>{NT}"CTB_ERROR"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 <DO_C>{NT}"fatal"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 <DO_C>{NT}"stdout_out"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 <DO_C>{NT}"stderr_out"{OpWQ} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 <DO_C>{NT}"with_output_to_temp_buffer"{OpWQ} { snarf (); }
4950
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
162 <DO_C>{NT}"weird_doc"{Open}{ArgCm}{Wh}{Q} { snarf (); /* #### FIXME snarf next arg() */}
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163
4950
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
164 <DO_C>{NT}"DEFVAR_BOOL"{OpenString}{ArgCm}{Wh}{Q} { snarf (); }
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
165 <DO_C>{NT}"DEFVAR_LISP"{OpenString}{ArgCm}{Wh}{Q} { snarf (); }
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
166 <DO_C>{NT}"DEFVAR_SPECIFIER"{OpenString}{ArgCm}{Wh}{Q} { snarf (); }
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
167 <DO_C>{NT}"DEFVAR_INT"{OpenString}{ArgCm}{Wh}{Q} { snarf (); }
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
168 <DO_C>{NT}"DEFVAR_BUFFER_LOCAL"{OpenString}{ArgCm}{Wh}{Q} { snarf (); }
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
169 <DO_C>{NT}"DEFVAR_BUFFER_DEFAULTS"{OpenString}{ArgCm}{Wh}{Q} { snarf (); }
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
170 <DO_C>{NT}"deferror"{Open}{ArgCm}{StringArg}{Wh}{Q} { snarf (); }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171
4950
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
172 <DO_C>{NT}"barf_or_query_if_file_exists"{Open}{ArgCm}{Wh}{Q} {
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 /* #### see comment above about use of Arg */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 snarf ();
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 <DO_C>{NT}"DEFUN"{Open} { BEGIN DEFUN; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 <DO_C>"/*" {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 /* This is hateful, but doc strings are sometimes put inside of comments
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 (to get around limits in cpp), so we can't ignore stuff inside of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 comments. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 /* BEGIN C_COMMENT; */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 <DO_C>{Q} { BEGIN C_QUOTE; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 <DO_C>{Any} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187
4950
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
188 <DEFUN>{StringArg}{ArgCm}{ArgCm}{ArgCm}{ArgCm}{Wh} { BEGIN DEFUN2; }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 <DEFUN>{Any} { bad_c_defun (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 <DEFUN2>{Q} {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 /* We found an interactive specification. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 snarf_return_state = DEFUN3;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 snarf ();
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 <DEFUN2>[^,]* {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 /* This function doesn't have an interactive specification.
4950
c50b0b3c7b8d Random changes to make-msgfile.lex
Ben Wing <ben@xemacs.org>
parents: 2367
diff changeset
198 Don't use {ArgCm} in the specification because DEFUN3 looks
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 for the comma. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 BEGIN DEFUN3;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 <DEFUN3>{Wh}","{Wh}{Q} {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 snarf_return_state = DO_C;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 snarf ();
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 <DEFUN3>{Any} { bad_c_defun (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 <C_QUOTE>{Esc} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 <C_QUOTE>{Q} { BEGIN DO_C; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 <C_QUOTE>{Any} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 <C_COMMENT>"*/" { BEGIN DO_C; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 <C_COMMENT>{Any} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 <DO_LISP>{LP}{LWh}"gettext"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 <DO_LISP>{LP}{LWh}"purecopy"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 <DO_LISP>{LP}{LWh}"interactive"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 <DO_LISP>{LP}{LWh}"message"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 <DO_LISP>{LP}{LWh}"error"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 <DO_LISP>{LP}{LWh}"warn"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 <DO_LISP>{LP}{LWh}"format"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 <DO_LISP>{LP}{LWh}"substitute-command-keys"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 <DO_LISP>{LP}{LWh}"temp-minibuffer-message"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 <DO_LISP>{LP}{LWh}"momentary-string-display"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 <DO_LISP>{LP}{LWh}"princ"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 <DO_LISP>{LP}{LWh}"prin1"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 <DO_LISP>{LP}{LWh}"prin1-to-string"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 <DO_LISP>{LP}{LWh}"print"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 <DO_LISP>{LP}{LWh}"insert"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 <DO_LISP>{LP}{LWh}"insert-before-markers"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 <DO_LISP>{LP}{LWh}"get-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 <DO_LISP>{LP}{LWh}"get-buffer-create"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 <DO_LISP>{LP}{LWh}"generate-new-buffer-name"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 <DO_LISP>{LP}{LWh}"rename-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 <DO_LISP>{LP}{LWh}"set-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 <DO_LISP>{LP}{LWh}"switch-to-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 <DO_LISP>{LP}{LWh}"pop-to-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 <DO_LISP>{LP}{LWh}"with-output-to-temp-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 <DO_LISP>{LP}{LWh}"buffer-enable-undo"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 <DO_LISP>{LP}{LWh}"buffer-disable-undo"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 <DO_LISP>{LP}{LWh}"get-buffer-window"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 <DO_LISP>{LP}{LWh}"delete-windows-on"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 <DO_LISP>{LP}{LWh}"replace-buffer-in-windows"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 <DO_LISP>{LP}{LWh}"display-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 <DO_LISP>{LP}{LWh}"other-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 <DO_LISP>{LP}{LWh}"read-from-minibuffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 <DO_LISP>{LP}{LWh}"read-shell-command"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 <DO_LISP>{LP}{LWh}"read-file-name"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 <DO_LISP>{LP}{LWh}"read-buffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 <DO_LISP>{LP}{LWh}"read-variable"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 <DO_LISP>{LP}{LWh}"read-command"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255 <DO_LISP>{LP}{LWh}"read-function"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 <DO_LISP>{LP}{LWh}"read-directory-name"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 <DO_LISP>{LP}{LWh}"read-string"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 <DO_LISP>{LP}{LWh}"read-number"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 <DO_LISP>{LP}{LWh}"read-minibuffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 <DO_LISP>{LP}{LWh}"read-quoted-char"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 <DO_LISP>{LP}{LWh}"read-face-name"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 <DO_LISP>{LP}{LWh}"read-itimer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263 <DO_LISP>{LP}{LWh}"completing-read"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 <DO_LISP>{LP}{LWh}"y-or-n-p"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 <DO_LISP>{LP}{LWh}"yes-or-no-p"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 <DO_LISP>{LP}{LWh}"query-replace-read-args"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 <DO_LISP>{LP}{LWh}"eval-minibuffer"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 <DO_LISP>{LP}{LWh}"edit-and-eval-command"{LWh}{Q} { inc_paren (); snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 <DO_LISP>{LP}{LWh}"defvar"{LWh}{LispToken}{LWh} {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 inc_paren (); begin_paren_counting (LDEF);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 <DO_LISP>{LP}{LWh}"defconst"{LWh}{LispToken}{LWh} {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 inc_paren (); begin_paren_counting (LDEF);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 <DO_LISP>{LP}{LWh}"defun"{LWh}{LispToken}{LWh} {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 inc_paren (); begin_paren_counting (LDEF);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 <DO_LISP>{LP}{LWh}"defmacro"{LWh}{LispToken}{LWh} {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 inc_paren (); begin_paren_counting (LDEF);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 <DO_LISP>{LP}{LWh}"defsubst"{LWh}{LispToken}{LWh} {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 inc_paren (); begin_paren_counting (LDEF);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 <DO_LISP>{Q} { BEGIN LQUO; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 <DO_LISP>";" { BEGIN LCOM; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 <DO_LISP>{LP} { inc_paren (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 <DO_LISP>{RP} { dec_paren (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 <DO_LISP>{Esc} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 <DO_LISP>{W} { lisp_whitespace (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 <DO_LISP>{Any} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 <LQUO>{Esc} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 <LQUO>{Q} { BEGIN DO_LISP; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 <LQUO>{Any} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 <LCOM>"\n" { BEGIN DO_LISP; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 <LCOM>{Any} { }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 <LDEF>{LWh}{Q} { snarf (); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 <LDEF>{Any} { BEGIN DO_LISP; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 <CSNARF>{Esc} { ECHO; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 <CSNARF>{Q} { ECHO; fprintf (yyout, ")\n"); BEGIN snarf_return_state; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 <CSNARF>{Any} { ECHO; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 <LSNARF>{Esc} { ECHO; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 <LSNARF>"\n" { fprintf (yyout, "\\n\\\n"); }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 <LSNARF>{Q} { ECHO; fprintf (yyout, ")\n"); BEGIN snarf_return_state; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 <LSNARF>{Any} { ECHO; }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 %%
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 enum filetype { C_FILE, LISP_FILE, INVALID_FILE };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 /* some brain-dead headers define this ... */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 #undef FALSE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 #undef TRUE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 enum boolean { FALSE, TRUE };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 void scan_file (char *filename);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 void process_C_file (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 void process_Lisp_file (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 int in_c;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 int in_paren_counting, paren_count;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 int paren_return_state;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 snarf ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 fprintf (yyout, "gettext(\"");
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 if (in_c)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 BEGIN CSNARF;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 BEGIN LSNARF;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 bad_c_defun ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 fprintf (stderr, "Warning: Invalid DEFUN encountered in C, line %d.\n",
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 yylineno);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 snarf_return_state = DO_C;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 BEGIN DO_C;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 /* REJECT; Sun's lex is broken! Use Flex! */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 bad_lisp_def ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 fprintf (stderr,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 "Warning: Invalid defmumble encountered in Lisp, line %d.\n",
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 yylineno);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 snarf_return_state = DO_LISP;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 BEGIN DO_LISP;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 /* REJECT; Sun's lex is broken! Use Flex! */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 inc_paren ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 if (in_paren_counting)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 paren_count++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 dec_paren ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 if (in_paren_counting)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 /* If we find a right paren without a matching left paren, it usually
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 just indicates a statement like
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 (defvar foo-mumble nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 where 'nil' is the sexp we are skipping over, and there's no
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 doc string. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 if (paren_count > 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 paren_count--;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 unput (')');
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 if (paren_count == 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 in_paren_counting = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 BEGIN paren_return_state;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 /* #### begin_paren_counting () does not handle recursive entries */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 begin_paren_counting (int return_state)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 in_paren_counting = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 paren_count = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 paren_return_state = return_state;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 lisp_whitespace ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 if (in_paren_counting && !paren_count)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 /* We got to the end of a token and we're not in a parenthesized
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 expression, so we're at the end of an sexp. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 in_paren_counting = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 BEGIN paren_return_state;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 yywrap ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 return 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 main (int argc, char *argv[])
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 register int i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 yyout = stdout;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 /* If first two args are -o FILE, output to FILE. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 i = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419 if (argc > i + 1 && strcmp (argv[i], "-o") == 0) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 yyout = fopen (argv[++i], "w");
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 ++i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423 /* ...Or if args are -a FILE, append to FILE. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424 if (argc > i + 1 && strcmp (argv[i], "-a") == 0) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425 yyout = fopen (argv[++i], "a");
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 ++i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 if (!yyout) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 fprintf (stderr, "Unable to open output file %s\n", argv[--i]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 for (; i < argc; i++)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 scan_file (argv[i]);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 return 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 void scan_file (char *filename)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 enum filetype type = INVALID_FILE;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 register char *p = filename + strlen (filename);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 if (strcmp (p - 4, ".elc") == 0) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 *--p = '\0'; /* Use .el file instead */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447 type = LISP_FILE;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448 } else if (strcmp (p - 3, ".el") == 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 type = LISP_FILE;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450 else if (strcmp (p - 2, ".o") == 0) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451 *--p = 'c'; /* Use .c file instead */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452 type = C_FILE;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453 } else if (strcmp (p - 2, ".c") == 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 type = C_FILE;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
455
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
456 if (type == INVALID_FILE) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
457 fprintf (stderr, "File %s being ignored\n", filename);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
460 yyin = fopen (filename, "r");
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
461 if (!yyin) {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462 fprintf (stderr, "Unable to open input file %s\n", filename);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
465
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466 fprintf (yyout, "/* %s */\n", filename);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467 if (type == C_FILE)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468 process_C_file ();
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
470 process_Lisp_file ();
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471 fputc ('\n', yyout);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 fclose (yyin);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 void process_C_file ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478 snarf_return_state = DO_C;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 in_c = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 BEGIN DO_C;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
481 yylex ();
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 void process_Lisp_file ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 snarf_return_state = DO_LISP;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487 in_c = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 BEGIN DO_LISP;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 yylex ();
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491