在語法中(例如,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. iPhone - &符號,&符號是什麼?
- 3. &符號是什麼意思?
- 4. PostgreSQL - 符號|||是什麼做?
- 5. 什麼是「___emutls_get_address」符號?
- 6. 什麼是€符號的unicode
- 7. 什麼是數學符號?
- 8. 什麼是表情符號?
- 9. 什麼是perl符號=〜
- 10. 什麼是__gmon_start__符號?
- 11. 什麼是4'd#符號?
- 12. 什麼是「_ZN7android16CameraParameters9isPreviewE」符號?
- 13. 符號「⊇」是什麼意思?
- 14. 什麼是符號計算?
- 15. 什麼是插入符號
- 16. 爲什麼Negative Lookahead超時和/或Pipe
- 17. 什麼是符號 - ,< and >是什麼意思?
- 18. 角4是什麼?符號是什麼意思?
- 19. 在Python lookahead正則表達式中。*的用途是什麼?
- 20. Python中「|」符號的含義是什麼?
- 21. Linux中的符號^ \意思是什麼
- 22. 什麼是用於jsp的$符號?
- 23. TSQL中的「#」符號是什麼意思?
- 24. Swift中'@'符號的含義是什麼?
- 25. 符號T(n)是什麼意思?
- 26. 什麼是目標C方法(^)符號
- 27. jQuery中符號$的含義是什麼?
- 28. JavaScript中的$符號是什麼意思?
- 29. 什麼是angular.js中的「[]」符號?
- 30. Javascript中的@符號是什麼?
這樣的超前是由一些處理器解釋爲「命令一樣」的符號。它允許提前瀏覽,以便讀取和評估輸入流的一部分_而不實際轉發stream_的位置。作爲一種效果,下一次讀取操作將讀取相同的序列。好處:你可以預先看到你對輸入的期望。對不起,目前沒有例子... – arkascha 2015-04-04 08:33:08
似乎是[編程器的StackExchange]的一個問題(http://programmers.stackexchange.com/) – 2015-04-04 08:53:40