2013-05-10 8 views

उत्तर

8

क्योंकि ++ जावा lexer के लिए एक वैध टोकन है, बयान x+++ ++y के रूप में टोकन में पार्स किए जाएंगे:

(x)(++)(++)(+)(y) 

ऊपर:

(x)(++)(+)()(++)(y) 

x+++++y जबकि अमान्य में tokenized हो जाएगा अमान्य जावा है क्योंकि ++ ऑपरेटर केवल उन चीज़ों पर लागू किया जा सकता है जो संख्यात्मक चर हैं, जो (x++) का परिणाम नहीं है। इस प्रकार का टोकनिंग maximal munch नामक अवधारणा का एक शानदार उदाहरण है।

JLS section 3.2

से सबसे लंबे समय तक संभव अनुवाद प्रत्येक चरण में प्रयोग किया जाता है, भले ही परिणाम अंततः एक सही कार्यक्रम जबकि एक अन्य शाब्दिक अनुवाद होता नहीं है।

इस प्रकार, इनपुट वर्ण ए-बी टोकननाइज्ड (§3.5) को एक, -, बी, जो कि किसी भी व्याकरणिक रूप से सही प्रोग्राम का हिस्सा नहीं है, भले ही टोकननाइजेशन ए, -, - बी बी हो सकता है एक व्याकरणिक रूप से सही कार्यक्रम का हिस्सा।

+0

अच्छा जवाब। धन्यवाद। – DSF

संबंधित मुद्दे