在編譯器構造,當你談論令牌,是一個令牌相同像一個符號/只是一個術語,表示符號?經過一些我認爲理解的研究後,令牌是符號表的一個參考符號,因此是某種帶有附加信息的歸因符號/符號?感謝您的任何clearfication :-)在編譯器構造中,與符號相同的符號是什麼?
10
A
回答
12
令牌不一定在符號表中的符號。例如,如果令牌是保留字,則不會將其輸入到符號表中。如果令牌是標識符,那麼它可能會被輸入到符號表中。
採取例如以下聲明:
char s[100];
甲詞法分析器可以輸出以下標記:取決於實現
<"char", IDENTIFIER>
它可以被識別爲一個保留字或輸入符號表中預定義的類型名(我不知道這裏100%),
<"s", IDENTIFIER>
「S」 被輸入在符號表中作爲變量標識符,
<"[", OPEN_SQUARE_BRACKET>
在符號表中沒有輸入,
<"100", INTEGER_LITERAL>
在符號表中沒有輸入,
<"]", CLOSE_SQUARE_BRACKET>
沒有進入在符號表,
<";", SEMI_COLON>
未輸入符號表中。
所以你基本上是在符號表中只有那些你需要在編譯過程以後的參考憑證進入。例如,在後來的函數體,當你發現
strcpy(s, "Hello, world\n");
再次識別令牌<「S」,標識符>然後在符號表中查找。符號表會說「s」已被聲明爲char []類型的變量。
所以,我會說令牌是詞法analizer承認任何輸入塊,並且只有具有特殊的意義一定令牌輸入爲符號符號表。
0
符號是在KEY給定的常量作爲處於S = S在該表中,或PI =裨該方程中,而令牌代表了給定爲交換在該條件下的平臺。
相關問題
- 1. 啓用調試的編譯器符號是什麼?
- 2. 編譯器:填充符號表的最佳方法是什麼?
- 3. Java編譯器錯誤:「找不到符號構造函數..」?
- 4. 符號化構造
- 5. 「符號」與「加載符號列表」中的含義是什麼?
- 6. Typescript:無法編譯文件:構造函數中的符號
- 7. iPhone - &符號,&符號是什麼?
- 8. 什麼是₧符號?
- 9. 反編譯代碼中的這些符號是什麼
- 10. 什麼是符號的文字構造函數?
- 11. 只有在x64下編譯時,爲什麼會生成編譯器警告「有符號/無符號不匹配」?
- 12. 編譯器階段的符號表和行號編號
- 13. yacc規則中符號完全相同的原因是什麼?
- 14. 讓VS編譯器捕獲有符號/無符號的賦值?
- 15. 什麼是€符號的unicode
- 16. 是什麼星號(*結構)符號在golang
- 17. 未定義的符號與編譯包
- 18. 編譯時錯誤「架構x86_64的未定義符號」是什麼意思?
- 19. 編譯器錯誤:意外的符號'}'
- 20. 爲什麼Java編譯器找不到符號?
- 21. &符號是什麼意思?
- 22. PostgreSQL - 符號|||是什麼做?
- 23. 什麼是「___emutls_get_address」符號?
- 24. 什麼是數學符號?
- 25. 什麼是表情符號?
- 26. 什麼是perl符號=〜
- 27. 什麼是lookahead符號?
- 28. 什麼是__gmon_start__符號?
- 29. 什麼是4'd#符號?
- 30. 什麼是「_ZN7android16CameraParameters9isPreviewE」符號?
非常感謝你的回覆!我莫名其妙地混了 –
所以從上面下的符號表;-)的名字 - 它是公平的認爲所有令牌進入符號表實際上 - 只標識?即什麼標記可能被輸入到不是標識符的符號表中? ..符號的定義完全是一個標識符? (而不是其他令牌'[',';','100'等。我猜測,我不知道。) – wardw
據我所知你是正確的:在符號表中輸入的唯一標記是標識符(函數,變量等)(也可參見http://en.wikipedia.org/wiki/Symbol_table) – Giorgio