parser.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #include "tree_types.h"
  2. #include "tree.h"
  3. #include "context_stack.h"
  4. #include "commands.h"
  5. #include "handle_commands.h"
  6. #include "def.h"
  7. /* In commands.c */
  8. int close_paragraph_command (enum command_id cmd_id);
  9. int close_preformatted_command (enum command_id cmd_id);
  10. int item_line_command (enum command_id cmd_id);
  11. /* In close.c */
  12. void close_command_cleanup (ELEMENT *current);
  13. ELEMENT *close_commands (ELEMENT *current, enum command_id closed_command,
  14. ELEMENT **closed_element, enum command_id);
  15. ELEMENT *close_all_style_commands (ELEMENT *current,
  16. enum command_id closed_command,
  17. enum command_id interrupting_command);
  18. ELEMENT *close_current (ELEMENT *current,
  19. enum command_id closed_command,
  20. enum command_id interrupting_command);
  21. /* In end_line.c */
  22. NODE_SPEC_EXTRA *parse_node_manual (ELEMENT *node);
  23. ELEMENT *end_line (ELEMENT *current);
  24. ELEMENT *parse_special_misc_command (char *line, enum command_id cmd,
  25. int *has_commment);
  26. int check_node_label (NODE_SPEC_EXTRA *nse, enum command_id cmd);
  27. typedef struct {
  28. char *type;
  29. ELEMENT *element;
  30. } FLOAT_RECORD;
  31. extern FLOAT_RECORD *floats_list;
  32. extern size_t floats_number;
  33. extern size_t floats_space;
  34. /* In debug.c */
  35. void debug (char *s, ...);
  36. void debug_nonl (char *s, ...);
  37. extern int debug_output;
  38. /* In separator.c */
  39. void register_command_arg (ELEMENT *current, char *key);
  40. ELEMENT *handle_separator (ELEMENT *current, char separator,
  41. char **line_inout);
  42. void remove_empty_content_arguments (ELEMENT *current);
  43. /* In parser.c */
  44. ELEMENT *parse_texi (ELEMENT *root_elt);
  45. void push_conditional_stack (enum command_id cond);
  46. enum command_id pop_conditional_stack (void);
  47. extern size_t conditional_number;
  48. void parse_texi_file (char *filename);
  49. int abort_empty_line (ELEMENT **current_inout, char *additional);
  50. ELEMENT *end_paragraph (ELEMENT *current,
  51. enum command_id closed_command,
  52. enum command_id interrupting_command);
  53. void isolate_last_space (ELEMENT *current, enum element_type type);
  54. int command_with_command_as_argument (ELEMENT *current);
  55. void mark_and_warn_invalid (enum command_id command,
  56. enum command_id invalid_parent,
  57. ELEMENT *marked_as_invalid_command);
  58. ELEMENT *begin_preformatted (ELEMENT *current);
  59. ELEMENT *end_preformatted (ELEMENT *current,
  60. enum command_id closed_command,
  61. enum command_id interrupting_command);
  62. char *read_command_name (char **ptr);
  63. ELEMENT *merge_text (ELEMENT *current, char *text);
  64. void start_empty_line_after_command (ELEMENT *current, char **line_inout,
  65. ELEMENT *command);
  66. ELEMENT *trim_spaces_comment_from_content (ELEMENT *original);
  67. ELEMENT *begin_paragraph (ELEMENT *current);
  68. int format_expanded_p (char *format);
  69. extern const char *whitespace_chars, *whitespace_chars_except_newline;
  70. extern const char *digit_chars;
  71. extern ELEMENT *current_node;
  72. extern ELEMENT *current_section;
  73. extern GLOBAL_INFO global_info;
  74. extern char *global_clickstyle;
  75. extern char *global_documentlanguage;
  76. enum kbd_enum {kbd_none, kbd_code, kbd_example, kbd_distinct };
  77. extern enum kbd_enum global_kbdinputstyle;
  78. void wipe_global_info (void);
  79. #include "macro.h"
  80. /* In multitable.c */
  81. ELEMENT *item_line_parent (ELEMENT *current);
  82. ELEMENT *item_multitable_parent (ELEMENT *current);
  83. void gather_previous_item (ELEMENT *current, enum command_id next_command);
  84. #include "dump_perl.h"
  85. /* In extra.c */
  86. void add_extra_element (ELEMENT *e, char *key, ELEMENT *value);
  87. void add_extra_contents (ELEMENT *e, char *key, ELEMENT *value);
  88. void add_extra_contents_array (ELEMENT *e, char *key, ELEMENT *value);
  89. void add_extra_text (ELEMENT *e, char *key, ELEMENT *value);
  90. void add_extra_index_entry (ELEMENT *e, char *key, INDEX_ENTRY_REF *value);
  91. void add_extra_misc_args (ELEMENT *e, char *key, ELEMENT *value);
  92. void add_extra_node_spec (ELEMENT *e, char *key, NODE_SPEC_EXTRA *value);
  93. void add_extra_node_spec_array (ELEMENT *, char *, NODE_SPEC_EXTRA **value);
  94. void add_extra_def_args (ELEMENT *e, char *key, DEF_ARGS_EXTRA *value);
  95. void add_extra_float_type (ELEMENT *e, char *key, EXTRA_FLOAT_TYPE *value);
  96. void add_extra_string (ELEMENT *e, char *key, char *value);
  97. KEY_PAIR *lookup_extra_key (ELEMENT *e, char *key);
  98. /* In menus.c */
  99. int handle_menu (ELEMENT **current_inout, char **line_inout);
  100. ELEMENT *enter_menu_entry_node (ELEMENT *current);
  101. #include "counter.h"
  102. /* Defined in parser.c */
  103. extern COUNTER count_remaining_args, count_items, count_cells;
  104. /* In api.c */
  105. extern CONF conf;