[英]How to initiate a variable from the Grammar in Bison?
假設我們有這種語法
start:
expressions;
expressions:
expressions expression
| expression
;
expression:
expression NAME value { float $2 = $3;}
| NAME value { float $1 = $2;}
;
value:
INT '.' INT
;
對於這個語法,我們應用此輸入
a 2.0 b 3.0
這應該由我們的語法解釋如下(float a = 2.0; float b = 3.0;)
我的目的實際上是聲明一個具有名稱的變量,並使用構造函數來執行諸如myClass NAME(value)之類的操作; 價值是浮點數。
問題是我不知道如何在示例中獲得像語法值之類的語法塊的全部值,以及如何進行變量名聲明,該變量名將在輸入文件的每一行中更改,並且不會具有一些通用浮點數= $ 1;
我已經有我的flex tokeniser工作了,它將給我NAME和VALUE
在C ++中,不能使用字符串代替變量名。 您應該做的是定義一個從字符串到浮點的映射,然后執行諸如the_map[$2] = $3;
而不是float $2 = $3;
。
無關緊要的是,您需要在value
上添加一個操作,使其生成浮點值(或讓您的詞法分析器為float生成單個標記並使用該標記)。 否則,在expression
的action中使用$3
它沒有適當的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.