簡體   English   中英

數字flex&bison

[英]numbers flex & bison

我正在編寫我的第一個flex and bison程序,這是一個簡單的計算器,我希望計算器能夠支持復數運算。

但是,我無法插入甚至處理其中的任何復雜數字,因為我需要flex以某種方式同時處理復數的實際值和圖像值並將其傳遞給野牛,而且我也不知道野牛如何處理2個參數。

這是我的flex文件:

正如你所看到的,我嘗試了一些東西,但這甚至沒有編譯(使用所有復雜的數字過程)。 只是為了記錄,復雜的數字看起來像1.000 + 2.111i,3i等。

如果你想要對你想象的數字進行算術運算,你可能想要創建一個結構,比如“img_t”,它有兩個字段,比如,real和img,然后編寫具有簽名的函數,例如“img_t img_add(img_t a) ,img_t b)“。 然后你的野牛制作將為每個操作員調用這些功能。 你的yyunion應該有一個字段img_t img。 如果你願意的話,你也可以在野牛中做這些功能。 關鍵是你需要一個包含虛數的yyunion結構。

typedef struct {
  double real, img;
} img_t;


%yyunion {
    :
    :
    img_t img;
};
:
:

expr_complex: expr_complex '+' expr_complex          { $$ = img_add($1, $3); }
    :
    :

如果你在lex中看到一個整數或兩個整數,你想把它變成一個虛數嗎? 如果是這種情況,那么你可以取消使用expr_int和expr_double並讓你所有的lex標記返回img_t。

如果你發布一些你要解析和評估的表達式,我可以做進一步的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM