1
我想你寫一些簡單的編譯器,檢測未聲明的變量,並做一些額外的東西。問題是,我不能在我的野牛文件中使用「$$」,它說「$$'$$'沒有聲明類型」。這裏是我的flex和野牛文件的相關部分:從flex返回屬性到野牛
flx file:
int[ \t\n]+matrix {yylval.type_id.Type = 4;return tINTMATRIXTYPE; }
bison file:
%}
%union semrec
{
struct
{
int Type;
char *id;
}type_id;
}
%start prog
%%
prog: stmtlst
;
stmtlst : stmt
| stmt stmtlst
;
tmt : decl //baktım
| asgn
| if
;
decl : type vars '=' expr ';'
;
type : tINTTYPE
| tINTVECTORTYPE
| tINTMATRIXTYPE {$$.Type=$1.Type;}
| tREALTYPE
| tREALVECTORTYPE
| tREALMATRIXTYPE
;
%%
寫作$ 1.型號野牛文件的工作,但$$類型不起作用。 任何人都可以幫忙嗎?謝謝
是的,這工作。謝謝! – yrazlik 2013-04-10 15:58:25
flex/bison是有趣且功能強大的小工具,但首先要弄清楚它們可能非常棘手。如果你還有其他問題,肯定會發布。出於好奇,這個項目的背景是什麼? – Josh 2013-04-10 16:01:20
謝謝,實際上ii還有一個問題。關於你的問題,項目的背景是,我們爲基本的數學操作編寫了掃描儀和語義分析器。我們在上一步中做了句法問題,現在我們必須檢測語義錯誤。 1)未聲明的變量2)矩陣或向量與整數,實數等比較。我的另一個問題是,我可以做這樣的事情:%token tIDENT,但我不能做以下幾點: %類型變量。我的意思是,如果它是一個令牌,那麼我可以將它與2個屬性相關聯,但是如果它是我不能的類型。 –
yrazlik
2013-04-10 17:25:36