在語法中(例如,LL(1)),表示帶符號的符號。在實踐中,我不明白這個符號是什麼。爲了理解,我需要一個簡單實用的例子。什麼是lookahead符號?
2
A
回答
4
LL(1)語法幫助您立即決定哪個語法規則您將使用。這一個超前標記意味着你只需要閱讀當前正在閱讀的字符中的下一個字符。
LL(1)語法可以幫助您將複雜度降低到O(n)
,並且在解析輸入時沒有回溯。
讓%
是正在閱讀的字符和輸入字符串爲(a + a)
甲LL(1)的語法:
S -> F (Rule1)
S -> (S + F) (Rule2)
F -> a (Rule3)
分析表是:
( ) a + $
S 2 - 1 - -
F - - 3 - -
然後,你必須:
%(a + a)
(讀取字符串的開始和先行是(,所以決定根據分析表)
抽象語法樹適用規則2現在是:
S
// | \ \
( S + F )
然後你消耗(
。而且你繼續以同樣的方式。
第2步:
S
// | \ \
( S + F )
|
F
|
a
第3步:
S
// | \ \
( S + F )
| |
F a
|
a
你可以看到,在完全相同的方式使用堆棧,而不是一個抽象語法樹維基百科的例子。
+2
Nitpick:lookahead的單位是標記,而不是字符。令牌可能由多個字符組成。 – 2015-04-04 13:22:31
相關問題
- 1. 符號「⊇」是什麼意思?
- 2. &符號是什麼意思?
- 3. 什麼是插入符號
- 4. 什麼是符號計算?
- 5. 什麼是數學符號?
- 6. 爲什麼Negative Lookahead超時和/或Pipe
- 7. 角4是什麼?符號是什麼意思?
- 8. 這是什麼類型的符號?
- 9. JSP中的$符號是什麼意思
- 10. PHP中符號的含義是什麼
- 11. 什麼是用於jsp的$符號?
- 12. 存在符號的命令是什麼
- 13. 評論中的「@」符號是什麼?
- 14. VBA中的$符號是做什麼的?
- 15. JavaScript中的$符號是什麼意思?
- 16. Javascript中的符號「:」是什麼意思?
- 17. CSS中'@'符號的用途是什麼?
- 18. CV符號是什麼意思?
- 19. 符號<>是什麼意思?
- 20. 什麼是JetBrains IDE中的「符號」
- 21. TSQL中的「#」符號是什麼意思?
- 22. 什麼是angular.js中的「[]」符號?
- 23. 什麼是未定義符號:X509_EXTENSION_free?
- 24. ,「@」符號的作用是什麼?
- 25. 什麼是帶符號整數溢出?
- 26. 這個eclipse符號是什麼意思?
- 27. %符號的鍵碼是什麼?
- 28. 是什麼符號^表示在Objective-C?
- 29. TypeScript中的@符號是什麼?
- 30. jQuery中符號$的含義是什麼?
這樣的超前是由一些處理器解釋爲「命令一樣」的符號。它允許提前瀏覽,以便讀取和評估輸入流的一部分_而不實際轉發stream_的位置。作爲一種效果,下一次讀取操作將讀取相同的序列。好處:你可以預先看到你對輸入的期望。對不起,目前沒有例子... – arkascha 2015-04-04 08:33:08
似乎是[編程器的StackExchange]的一個問題(http://programmers.stackexchange.com/) – 2015-04-04 08:53:40