gs_token.h
上传用户:mei_mei897
上传日期:2007-01-05
资源大小:82k
文件大小:4k
源码类别:

手机短信编程

开发平台:

Unix_Linux

  1. /* -------------------------------------------------------------------- */
  2. /* SMS Client, send messages to mobile phones and pagers */
  3. /* */
  4. /* gs_token.h */
  5. /* */
  6. /*  Copyright (C) 1997,1998 Angelo Masci */
  7. /* */
  8. /*  This library is free software; you can redistribute it and/or */
  9. /*  modify it under the terms of the GNU Library General Public */
  10. /*  License as published by the Free Software Foundation; either */
  11. /*  version 2 of the License, or (at your option) any later version. */
  12. /* */
  13. /*  This library is distributed in the hope that it will be useful, */
  14. /*  but WITHOUT ANY WARRANTY; without even the implied warranty of */
  15. /*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU */
  16. /*  Library General Public License for more details. */
  17. /* */
  18. /*  You should have received a copy of the GNU Library General Public */
  19. /*  License along with this library; if not, write to the Free */
  20. /*  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
  21. /* */
  22. /*  You can contact the author at this e-mail address: */
  23. /* */
  24. /*  angelo@styx.demon.co.uk */
  25. /* */
  26. /* -------------------------------------------------------------------- */
  27. /* $Id$
  28.    -------------------------------------------------------------------- */
  29. #if !defined(_TOKEN_H_)
  30. #define _TOKEN_H_ 1
  31. /* -------------------------------------------------------------------- */
  32. /* Maximum number of tokens we can store in a */
  33. /* heap. */
  34. /* -------------------------------------------------------------------- */
  35. #define MAX_TOKENS 1024
  36. /* -------------------------------------------------------------------- */
  37. struct token_struct
  38. { char  *str;
  39. int type;
  40. int ptr_type;
  41. void *ptr;
  42. };
  43. typedef struct token_struct TOKEN;
  44. /* -------------------------------------------------------------------- */
  45. struct token_list_struct
  46. {
  47. TOKEN *token;
  48. struct token_list_struct *next;
  49. };
  50. typedef struct token_list_struct TOKEN_LIST;
  51. /* -------------------------------------------------------------------- */
  52. struct token_heap_struct
  53. {
  54. TOKEN_LIST
  55. *list;
  56. };
  57. typedef struct token_heap_struct TOKEN_HEAP;
  58. /* -------------------------------------------------------------------- */
  59. typedef TOKEN * TOKEN_ID;
  60. extern  TOKEN_ID
  61. null_tok,
  62. eof_tok,
  63. assignment_tok,
  64. lparen_tok,
  65. rparen_tok,
  66. lcurly_tok,
  67. rcurly_tok,
  68. comma_tok,
  69. dot_tok,
  70. semicolon_tok;
  71. /* -------------------------------------------------------------------- */
  72. #define T_IDENTIFIER 1
  73. #define T_SPECIAL 2
  74. #define T_STRING 3
  75. #define TP_STRING 1
  76. #define TP_DICTIONARY 2
  77. #define TP_LIST 3
  78. /* -------------------------------------------------------------------- */
  79. TOKEN_ID get_next_token(TOKEN_HEAP *heap);
  80. TOKEN_ID add_token(TOKEN_HEAP *heap, char *str, int type, void *ptr);
  81. char *get_token_strvalue(TOKEN_HEAP *heap, TOKEN_ID token_id);
  82. char *get_token_strtype(TOKEN_HEAP *heap, TOKEN_ID token_id);
  83. char *get_token_indirect_string(TOKEN_HEAP *heap, TOKEN_ID token_id);
  84. void init_builtin_heap(void);
  85. void push_back_character(int character);
  86. void push_back_token(TOKEN_ID token);
  87. void dump_heap(TOKEN_HEAP *heap, char *name);
  88. void token_assign_value(TOKEN_HEAP *heap, TOKEN_ID token_id, char *string);
  89. void token_assign_dictionary(TOKEN_HEAP *heap, TOKEN_ID token_id, TOKEN_HEAP *dictionary);
  90. void token_assign_list(TOKEN_HEAP *heap, TOKEN_ID token_id, TOKEN_HEAP *dictionary);
  91. int get_token_type(TOKEN_HEAP *heap, TOKEN_ID token_id);
  92. int get_token_indirect_type(TOKEN_HEAP *heap, TOKEN_ID token_id);
  93. int gs_open(char *file);
  94. int gs_close(void);
  95. TOKEN_HEAP *generate_new_heap(void);
  96. TOKEN_HEAP *get_token_indirect_dictionary(TOKEN_HEAP *heap, TOKEN_ID token_id);
  97. TOKEN_HEAP *get_token_indirect_list(TOKEN_HEAP *heap, TOKEN_ID token_id);
  98. void init_heap(TOKEN_HEAP *heap);
  99. void free_heap(TOKEN_HEAP *heap);
  100. /* -------------------------------------------------------------------- */
  101. #endif