0
什麼是這些關鍵字的含義:如何在C++中使用lex或yacc中的移位,減少,錯誤,接受和衝突關鍵字?
shift
,reduce
,error
,accept
,?
請給每個的完整描述。
switch (oAction)
{
case SSYaccAction::shift:
oElement = shift(lookahead());
if (!oElement) return SSTrue;
oElement->oLexeme = lookahead();
oElement->oulState = state();
push();
if (getLexeme()) return SSTrue;
oulError++;
break;
case SSYaccAction::reduce:
oElement = reduce(production(), productionSize());
if (!oElement) return SSTrue;
pop(productionSize());
if (goTo(leftside())) return SSTrue;
break;
case SSYaccAction::error:
oError = SSTrue;
if (error(state(), lookahead()))
return SSTrue;
oulError = 0;
break;
case SSYaccAction::accept:
return accept();
default:
throwException(SSExceptionYaccParse, SSYaccMsgParse);
return SSTrue;
在上面的代碼,什麼是
lookahead()
和
reduce(production(), productionSize())
您是否試過閱讀Yacc [文檔](http://dinosaur.compilertools.net/yacc/)?這包含上面的一個清晰的解釋,以及許多其他信息讓你開始。 – EkcenierK
不...讓我看看.. Thanx ... – Ratikant
對不起,鏈接錯了,我現在更新了! – EkcenierK