2013-05-02 20 views
0

例如,對於規則:如何讓YACC告訴我的預期lexem/TOKE

%token TOKEN 
%% 
foo: TOKEN; 

%% 

考慮TOKEN是在lexem令牌,然後當我解析:

tokken

它將顯示Syntax error expected TOKEN recive tokken有一種方法來改變這個,所以它不認爲TOKEN的名字放在了這個詞彙中:Syntax error expected token recive tokken

+0

錯誤,改變'TOKEN?'的名字?'不是一個真正的問題。 – EJP 2013-05-03 10:27:19

+0

我發現我如何發佈,並且你可以看到我的發現。 – 2013-05-06 07:22:42

回答

0

一些深入的研究後,嗯,我覺得它是如此:

在令牌的聲明:

parser.y:

%token TOKEN "token" 

%% 

foo : TOKEN 

當你寫tokken本作insted的token錯誤消息顯示了tokken聲明的字符串(%token TOKEN "token" )上找到的內容。我會做一個更好的例子:

parser.y:

%token TOKEN "token" 
%token PYC ";" 


%% 

foo : TOKEN PYC 

如果你的程序是token.那麼誤差將unexpected "." expecting ";"。沒有了「;」在線%token PYC ";"那麼錯誤將是unexpected "." expecting PYC這是更難以理解。

相關問題