Annotation of parser3/src/main/compile_tools.h, revision 1.2

1.1       paf         1: /*
1.2     ! paf         2:   $Id: compile_tools.h,v 1.1 2001/02/20 18:45:52 paf Exp $
1.1       paf         3: */
                      4: 
                      5: #ifndef COMPILE_TOOLS
                      6: #define COMPILE_TOOLS
                      7: 
                      8: #include "code.h"
                      9: #include "pa_types.h"
                     10: 
                     11: enum lexical_state {
                     12:        LS_USER,
                     13:        LS_VAR_NAME_SIMPLE,
                     14:        LS_VAR_NAME_CURLY,
                     15:        LS_VAR_ROUND,
                     16:        LS_VAR_CURLY,
                     17:        LS_METHOD_NAME,
                     18:        LS_METHOD_ROUND,
                     19:        LS_METHOD_CURLY,
                     20:        LS_METHOD_AFTER
                     21: };
                     22: struct parse_control {
                     23:        /* input */
                     24:        void *pool;
                     25: #ifndef NO_CSTRING_ORIGIN
                     26:        char *source;
                     27:        char *file;
                     28:        int line;
                     29: #endif
                     30:        /* state */
                     31:        int pending_state/*=0*/;
                     32:        void *string/*=string_create(...)*/;
                     33:        
                     34: #define MAX_LEXICAL_STATES 100
                     35:        enum lexical_state ls/*=LS_USER*/;
                     36:        int sp/*=0*/;
                     37:        enum lexical_state stack[MAX_LEXICAL_STATES];
                     38:        int brackets_nestages[MAX_LEXICAL_STATES];
                     39:        
                     40:        /* output: Array *  */
                     41:        void *result;
                     42: };
                     43: 
                     44: #ifdef __cplusplus
                     45: extern "C" {
                     46: #endif
                     47:        /* New array // return empty array */
                     48:        void *N(void *apool);
                     49:        
                     50:        /* Assembler instruction // append ordinary instruction to result */
                     51:        void A(void **result, enum OPCODE acode);
                     52: 
1.2     ! paf        53:        /* Assembler arGument // append instruction; append param */
        !            54:        void G(void **result, void *param);
1.1       paf        55: 
                     56:        /* Literal // returns array with 
                     57:                // first: OP_STRING instruction
                     58:                // second op: string itself
                     59:        */
                     60:        void *L(void *astring);
                     61:        /* Literal String // return string value from literal array OP+string array */
                     62:        void *LS(void *literal);
                     63: 
                     64:        /* aPpend code array // append code_array to result */
                     65:        void P(void **result, void *code_array);
                     66: 
                     67: 
                     68:        void push_LS(struct parse_control *pc);
                     69:        void pop_LS(struct parse_control *pc);
                     70: 
                     71:        void *string_create(void *pool);
                     72: 
                     73: #ifndef NO_STRING_ORIGIN
                     74: #      define CSTRING_APPEND_PARAMS void *astring, char *piece, size_t size, char *file, uint line
                     75: #      define CSTRING_APPEND(astring, piece, size, file, line) real_cstring_append(astring, piece, size, file, line)
                     76: #else
                     77: #      define CSTRING_APPEND_PARAMS void *astring, char *piece, size_t size
                     78: #      define CSTRING_APPEND(astring, piece, size, file, line) real_cstring_append(astring, piece, size)
                     79: #endif
                     80:        void real_cstring_append(CSTRING_APPEND_PARAMS);
                     81:        char *string_cstr(void *astring);
                     82: 
                     83:        void exception(void *pool, 
                     84:                void *atype, void *acode,
                     85:                void *aproblem_source, 
                     86:                char *acomment);
                     87: 
                     88: #ifdef __cplusplus
                     89: }
                     90: #endif
                     91: 
                     92: #endif

E-mail: