diff tests/agcl/parsifal/good/rfc822a.h @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/agcl/parsifal/good/rfc822a.h	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,88 @@
+#ifndef RFC822A_H
+#define RFC822A_H
+
+typedef enum {
+  rfc822a_message_token = 1, rfc822a_CRLF_token, rfc822a_atom_token,
+  rfc822a_word_token, rfc822a_linear_space_token, rfc822a_number_token = 8,
+  rfc822a_address_token, rfc822a_mailbox_token, rfc822a_group_token,
+  rfc822a_addr_spec_token, rfc822a_local_part_token,
+  rfc822a_domain_token = 15, rfc822a_ATOM_CHAR_token,
+  rfc822a_authentic_token, rfc822a_SPACE_token = 22,
+  rfc822a_multiple_mailboxes_token, rfc822a_comment_token = 26,
+  rfc822a_comment_choice_token, rfc822a_ctext_token,
+  rfc822a_quoted_pair_token, rfc822a_linear_white_space_token = 32,
+  rfc822a_date_token, rfc822a_day_numb_token, rfc822a_month_token,
+  rfc822a_year_token, rfc822a_DIGIT_token, rfc822a_dates_token,
+  rfc822a_orig_date_token, rfc822a_resent_date_token,
+  rfc822a_date_time_token, rfc822a_day_token, rfc822a_time_token = 45,
+  rfc822a_delimeters_token = 53, rfc822a_specials_token,
+  rfc822a_destination_token, rfc822a_addresses_token = 57,
+  rfc822a_multiple_sub_domains_token = 64, rfc822a_sub_domain_token,
+  rfc822a_domain_literal_token = 67, rfc822a_literal_fill_token = 69,
+  rfc822a_dtext_token = 72, rfc822a_domain_ref_token,
+  rfc822a_field_token = 75, rfc822a_field_name_token,
+  rfc822a_field_body_token, rfc822a_fields_token = 79,
+  rfc822a_fields_makeup_token, rfc822a_source_token,
+  rfc822a_optional_field_token, rfc822a_field_body_contents_token,
+  rfc822a_LWSP_char_token, rfc822a_CHAR_token = 86, rfc822a_hour_token = 91,
+  rfc822a_route_addr_token = 95, rfc822a_text_token,
+  rfc822a_msg_id_token = 112, rfc822a_optional_fields_token = 115,
+  rfc822a_originator_token = 118, rfc822a_phrase_token = 121,
+  rfc822a_qtext_token = 123, rfc822a_quoted_string_token = 126,
+  rfc822a_QUOTED_token = 128, rfc822a_received_token = 131,
+  rfc822a_received_fields_token = 133, rfc822a_rec_date_time_token = 135,
+  rfc822a_from_token, rfc822a_from_domain_token,
+  rfc822a_by_domain_token = 139, rfc822a_via_atom_token = 141,
+  rfc822a_with_atom_token = 143, rfc822a_rec_msg_id_token = 145,
+  rfc822a_for_addr_spec_token = 147, rfc822a_resent_token,
+  rfc822a_resent_authentic_token, rfc822a_return_token = 155,
+  rfc822a_route_token = 157, rfc822a_route_list_token,
+  rfc822a_sub_route_token, rfc822a_trace_token = 161,
+  rfc822a_text_char_token = 164, rfc822a_zone_token = 166,
+  rfc822a_ALPHA_token = 178
+} rfc822a_token_type;
+
+typedef struct rfc822a_pcb_struct{
+  rfc822a_token_type token_number, reduction_token, error_frame_token;
+  int input_code;
+  int input_value;
+  int line, column;
+  int ssx, sn, error_frame_ssx;
+  int drt, dssx, dsn;
+  int ss[128];
+  int vs[128];
+  int ag_ap;
+  const char *error_message;
+  char read_flag;
+  char exit_flag;
+  unsigned char * input_context;
+  unsigned char * cs[128];
+  int bts[128], btsx;
+  unsigned char * pointer;
+  unsigned char * la_ptr;
+  const unsigned char *key_sp;
+  int save_index, key_state;
+  char ag_msg[82];
+} rfc822a_pcb_type;
+
+#ifndef PRULE_CONTEXT
+#define PRULE_CONTEXT(pcb)  (&((pcb).cs[(pcb).ssx]))
+#define PERROR_CONTEXT(pcb) ((pcb).cs[(pcb).error_frame_ssx])
+#define PCONTEXT(pcb)       ((pcb).cs[(pcb).ssx])
+#endif
+
+#ifndef AG_RUNNING_CODE
+/* PCB.exit_flag values */
+#define AG_RUNNING_CODE         0
+#define AG_SUCCESS_CODE         1
+#define AG_SYNTAX_ERROR_CODE    2
+#define AG_REDUCTION_ERROR_CODE 3
+#define AG_STACK_ERROR_CODE     4
+#define AG_SEMANTIC_ERROR_CODE  5
+#endif
+
+extern rfc822a_pcb_type rfc822a_pcb;
+void init_rfc822a(void);
+void rfc822a(void);
+#endif
+