diff --git a/C/parser.c b/C/parser.c index 1ad461938..3dff8c89f 100644 --- a/C/parser.c +++ b/C/parser.c @@ -581,31 +581,19 @@ ParseTerm(int prio, JMPBUFF *FailBuff) break; case '[': NextToken; - if (Yap_tokptr->Tok == Ord(Ponctuation_tok) && - Unsigned(Yap_tokptr->TokInfo) == ']') { - t = TermNil; - NextToken; - } else { - t = ParseList(FailBuff); - checkfor((Term) ']', FailBuff); - } + t = ParseList(FailBuff); + checkfor((Term) ']', FailBuff); break; case '{': NextToken; - if (Yap_tokptr->Tok == Ord(Ponctuation_tok) && - Unsigned(Yap_tokptr->TokInfo) == '}') { - t = MkAtomTerm(NameOfFunctor(FunctorBraces)); - NextToken; - } else { - t = ParseTerm(1200, FailBuff); - t = Yap_MkApplTerm(FunctorBraces, 1, &t); - /* check for possible overflow against local stack */ - if (H > ASP-4096) { - Yap_ErrorMessage = "Stack Overflow"; - FAIL; - } - checkfor((Term) '}', FailBuff); - } + t = ParseTerm(1200, FailBuff); + t = Yap_MkApplTerm(FunctorBraces, 1, &t); + /* check for possible overflow against local stack */ + if (H > ASP-4096) { + Yap_ErrorMessage = "Stack Overflow"; + FAIL; + } + checkfor((Term) '}', FailBuff); break; default: FAIL; diff --git a/C/scanner.c b/C/scanner.c index 25e639a2d..d6752cec8 100644 --- a/C/scanner.c +++ b/C/scanner.c @@ -1194,6 +1194,24 @@ Yap_tokenizer(int inp_stream, Term *tposp) if (t->TokInfo == '(' && !solo_flag) { t->TokInfo = 'l'; solo_flag = TRUE; + } else if (och == '[') { + while (chtype(ch) == BS) { ch = Nxtch(inp_stream); }; + if (ch == ']') { + t->TokInfo = Unsigned(AtomNil); + t->Tok = Ord(kind = Name_tok); + ch = Nxtch(inp_stream); + solo_flag = FALSE; + break; + } + } else if (och == '{') { + while (chtype(ch) == BS) { ch = Nxtch(inp_stream); }; + if (ch == '}') { + t->TokInfo = Unsigned(AtomBraces); + t->Tok = Ord(kind = Name_tok); + ch = Nxtch(inp_stream); + solo_flag = FALSE; + break; + } } t->Tok = Ord(kind = Ponctuation_tok); break;