編譯原理04 識別無符號數

2021-10-25 07:43:22 字數 1514 閱讀 7832

無符號數的bnf描述如下:

《無符號數》→d 《餘留無符號數》 | . 《十進位制小數》 | e 《指數部分》 《餘留無符號數》→d 《餘留無符號數》 | .

《十進位制小數》 | e《指數部分》 |ε 《十進位制小數》→d《餘留十進位制小數》 《餘留十進位制小數》→e 《指數部分》|d 《餘留十進位制小數》

|ε 《指數部分》→d 《餘留整指數》 | + 《整指數》 | - 《整指數》 《整指數》 → d 《餘留整指數》

《餘留整指數》→d《餘留整指數》 |ε

其中d表示0~9的任一數字

編寫乙個dfa程式判斷輸入的無符號數是否合法。

input 輸入多行符號串,輸入eof結束。

output 判斷每行輸入的符號串,如果符號串是無符號數,輸出「accept」,否則輸出"not accept"。

sample input

123456789.89900

pi

sample output

accept

not accept

c++**實現

#include

"iostream"

using

namespace std;

string s;

intwufuhaoshu

(string s)

;//1.無符號數

intyuliuwufuhaoshu

(string s)

;//2.餘留無符號數

intshijinzhixiaoshu

(string s)

;//3.十進位制小數

intyuliushijinzhixiaoshu

(string s)

;//4.餘留十進位制小數

intzhishubufen

(string s)

;//5.指數部分

intzhengzhishu

(string s)

;//6.整指數

intyuliuzhengzhishu

(string s)

;//7.餘留整指數

intwufuhaoshu

(string s)

intyuliuwufuhaoshu

(string s)

intshijinzhixiaoshu

(string s)

intyuliushijinzhixiaoshu

(string s)

intzhishubufen

(string s)

intzhengzhishu

(string s)

intyuliuzhengzhishu

(string s)

intmain()

return0;

}

符號表 (編譯原理)

符號表是一種用於語言翻譯器 例如編譯器和直譯器 中的資料結構。在符號表中,程式源 中的每個識別符號都和它的宣告或使用資訊繫結在一起,比如其資料型別 作用域以及記憶體位址。符號表在編譯程式工作的過程中需要不斷收集 記錄和使用源程式中一些語法符號的型別和特徵等相關資訊。這些資訊一般以 形式儲存於系統中。...

編譯原理之符號表

二 符號表的組織方式 三 符號表的整理 查詢 四 名字的作用範圍 五 符號表的內容 int a float b 5 則在符號表中收集到關於符號a的屬性是乙個整型變數,關於符號b的屬性是具有5個浮點型元素的一維陣列。同乙個識別符號可能在程式的不同地方出現,而有關該符號的屬性是在這些不同情況下收集的。特...

編譯原理語義分析 編譯原理 語義分析和符號表

本文使用 zhihu on vscode 創作並發布經過詞法分析 語法分析之後,源程式形式上和結構上的正確性基本得到了保證。然而,僅有形式上的正確性,並不能保證源程式就是完全正確的,還要檢查源程式的含義是否正確。諸如符號的使用是否得當,表示式的型別是否相容等,完成這些功能的編譯階段稱為語義分析。語義...