#include "regexpr.h" xsyntax _xsyntax; // RegExpr::Deque RegExpr::Deque::Deque() { head = 0; tail = 0; } RegExpr::Deque::~Deque() { while(head) { tail = head; head = head->next; delete tail; } } void RegExpr::Deque::push(int n) { Element *ptr = new Element; ptr->n = n; ptr->next = head; if(!tail) tail = ptr; head = ptr; } void RegExpr::Deque::put(int n) { Element *ptr = new Element; ptr->n = n; ptr->next = 0; if(!head) head = ptr; else tail->next = ptr; tail = ptr; } int RegExpr::Deque::pop() { int ret = head->n; Element *ptr = head; head = head->next; if(!head) tail = 0; delete ptr; return ret; } inline int RegExpr::Deque::isEmpty() { return head ? 0 : 1; } // RegExpr RegExpr::RegExpr() { automaton[0].next1 = 0; automaton[0].next2 = 0; } RegExpr::RegExpr(const char *pattern) { compile(pattern); } void RegExpr::clear_automaton() { for(int n=0;n