Annotation of parser3/src/main/compile_tools.C, revision 1.8
1.1 paf 1: /*
1.8 ! paf 2: $Id: compile_tools.C,v 1.7 2001/02/22 10:43:45 paf Exp $
1.1 paf 3: */
4:
5: #include "compile_tools.h"
6: #include "pa_string.h"
7: #include "pa_array.h"
8: #include "pa_exception.h"
1.8 ! paf 9: #include "pa_value.h"
1.1 paf 10:
1.8 ! paf 11: Array *L(Value *value) {
1.1 paf 12: // empty ops array
1.8 ! paf 13: Array *result=N(value->pool());
1.1 paf 14:
15: // append OP_STRING
1.8 ! paf 16: Operation op; op.code=OP_VALUE;
1.6 paf 17: *result+=op.cast;
1.1 paf 18:
1.8 ! paf 19: // append 'value'
! 20: *result+=value;
1.1 paf 21:
22: return result;
23: }
24:
1.5 paf 25: String *LA2S(Array *literal_string_array, int offset) {
1.8 ! paf 26: return static_cast<Value *>(literal_string_array->get(offset+1))->get_string();
1.1 paf 27: }
28:
29:
1.5 paf 30: void push_LS(struct parse_control *pc, lexical_state new_state) {
1.1 paf 31: if(pc->sp<MAX_LEXICAL_STATES) {
1.5 paf 32: pc->stack[pc->sp++]=pc->ls; pc->ls=new_state;
1.1 paf 33: } else
1.7 paf 34: pc->pool->THROW(0, 0, 0, "push_LS: stack overflow");
1.1 paf 35: }
36: void pop_LS(struct parse_control *pc) {
37: if(--pc->sp>=0)
38: pc->ls=pc->stack[pc->sp];
39: else
1.7 paf 40: pc->pool->THROW(0, 0, 0, "push_LS: stack underflow");
1.1 paf 41: }
E-mail: