summaryrefslogtreecommitdiffstats
path: root/src/map/amap/amapParse.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2010-11-29 01:35:09 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2010-11-29 01:35:09 -0800
commit42cebe99d09df1b6ac2f58bdfa1f6e47cb4bc4d2 (patch)
tree5bfedb22699453f3f6d81e9b4d811b9cfd6387f9 /src/map/amap/amapParse.c
parent9bff0309ae9bee48b4f61c1d82da4cd4ca25fda8 (diff)
downloadabc-42cebe99d09df1b6ac2f58bdfa1f6e47cb4bc4d2.tar.gz
abc-42cebe99d09df1b6ac2f58bdfa1f6e47cb4bc4d2.tar.bz2
abc-42cebe99d09df1b6ac2f58bdfa1f6e47cb4bc4d2.zip
Bug fix: unhandled & symbol in Liberty formula representation
Diffstat (limited to 'src/map/amap/amapParse.c')
-rw-r--r--src/map/amap/amapParse.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/map/amap/amapParse.c b/src/map/amap/amapParse.c
index dd6137c9..3ebbec11 100644
--- a/src/map/amap/amapParse.c
+++ b/src/map/amap/amapParse.c
@@ -37,6 +37,7 @@ ABC_NAMESPACE_IMPL_START
#define AMAP_EQN_SYM_NEG '!' // negation before the variable
#define AMAP_EQN_SYM_NEGAFT '\'' // negation after the variable
#define AMAP_EQN_SYM_AND '*' // logic AND
+#define AMAP_EQN_SYM_AND2 '&' // logic AND
#define AMAP_EQN_SYM_XOR '^' // logic XOR
#define AMAP_EQN_SYM_OR '+' // logic OR
#define AMAP_EQN_SYM_OR2 '|' // logic OR
@@ -184,6 +185,7 @@ Hop_Obj_t * Amap_ParseFormula( FILE * pOutput, char * pFormInit, Vec_Ptr_t * vVa
Vec_PtrPush( pStackFn, Hop_Not( (Hop_Obj_t *)Vec_PtrPop(pStackFn) ) );
break;
case AMAP_EQN_SYM_AND:
+ case AMAP_EQN_SYM_AND2:
case AMAP_EQN_SYM_OR:
case AMAP_EQN_SYM_OR2:
case AMAP_EQN_SYM_XOR:
@@ -193,7 +195,7 @@ Hop_Obj_t * Amap_ParseFormula( FILE * pOutput, char * pFormInit, Vec_Ptr_t * vVa
Flag = AMAP_EQN_FLAG_ERROR;
break;
}
- if ( *pTemp == AMAP_EQN_SYM_AND )
+ if ( *pTemp == AMAP_EQN_SYM_AND || *pTemp == AMAP_EQN_SYM_AND2 )
Vec_IntPush( pStackOp, AMAP_EQN_OPER_AND );
else if ( *pTemp == AMAP_EQN_SYM_OR || *pTemp == AMAP_EQN_SYM_OR2 )
Vec_IntPush( pStackOp, AMAP_EQN_OPER_OR );
@@ -252,7 +254,7 @@ Hop_Obj_t * Amap_ParseFormula( FILE * pOutput, char * pFormInit, Vec_Ptr_t * vVa
// scan the next name
for ( i = 0; pTemp[i] &&
pTemp[i] != ' ' && pTemp[i] != '\t' && pTemp[i] != '\r' && pTemp[i] != '\n' &&
- pTemp[i] != AMAP_EQN_SYM_AND && pTemp[i] != AMAP_EQN_SYM_OR && pTemp[i] != AMAP_EQN_SYM_OR2 &&
+ pTemp[i] != AMAP_EQN_SYM_AND && pTemp[i] != AMAP_EQN_SYM_AND2 && pTemp[i] != AMAP_EQN_SYM_OR && pTemp[i] != AMAP_EQN_SYM_OR2 &&
pTemp[i] != AMAP_EQN_SYM_XOR && pTemp[i] != AMAP_EQN_SYM_NEGAFT && pTemp[i] != AMAP_EQN_SYM_CLOSE;
i++ )
{