# HG changeset patch # User Masataka Kohagura # Date 1453713637 -32400 # Node ID 61d4d466e64c4c6e59facbb8eec98f59e4794c79 # Parent 21b9ba76f91b533d4f24910b4b07bc1244cf6b4b fix Makefile diff -r 21b9ba76f91b -r 61d4d466e64c regexParser/Makefile --- a/regexParser/Makefile Sun Jan 24 21:10:12 2016 +0900 +++ b/regexParser/Makefile Mon Jan 25 18:20:37 2016 +0900 @@ -85,7 +85,7 @@ ./regexParser -regex '[d-ga-db-e]' ./regexParser -regex '[d-gh-ja-e]' ./regexParser -regex 'abcd' - ./regexParser -regex '([a-c]x]|[d-f]y)' + ./regexParser -regex '([a-c]x|[d-f]y)' test2: regexParser ./regexParser -subset -regex '(a|b)*a(a|b)(a|b)' diff -r 21b9ba76f91b -r 61d4d466e64c regexParser/regexParser.cc --- a/regexParser/regexParser.cc Sun Jan 24 21:10:12 2016 +0900 +++ b/regexParser/regexParser.cc Mon Jan 25 18:20:37 2016 +0900 @@ -260,6 +260,9 @@ n->right = n1; } else if (ri->tokenType == ')') { return n; + } else if (ri->tokenType == ']') { + // error + return n; } else { n = createNode(ri,'+',0,n,0); NodePtr n1 = regexAtom(ri); diff -r 21b9ba76f91b -r 61d4d466e64c regexParser/subsetConstruction.cc --- a/regexParser/subsetConstruction.cc Sun Jan 24 21:10:12 2016 +0900 +++ b/regexParser/subsetConstruction.cc Mon Jan 25 18:20:37 2016 +0900 @@ -214,8 +214,6 @@ BitVector bi = createBitVector(tgv.tg->totalStateCount); StatePtr s = createState(tgv.tg,bi); n->stateNum = s->stateNum; - s->next = tgv.tg->stateList; - tgv.tg->stateList = s; s->node = n; s->bitState = bi; s->accept = false; @@ -310,7 +308,10 @@ TGValue generateTransitionList(NodePtr n) { TGValue tgv = createTGValue(); + State dummy; + tgv.tg->stateEnd = &dummy; StatePtr startState = tgv.startState = createState(tgv,n); + tgv.tg->stateList = startState; NodePtr eof = createNode(NULL,'e',NULL,NULL,NULL); StatePtr endState = tgv.endState = createState(tgv,eof); endState->accept = true;