Tokenizing, कुछ ही कदम की रचना की जा सकती है, उदाहरण के लिए, आप इस एचटीएमएल कोड है, तो:
<html>
<head>
<title>My HTML Page</title>
</head>
<body>
<p style="special">
This paragraph has special style
</p>
<p>
This paragraph is not special
</p>
</body>
</html>
tokenizer महत्वपूर्ण टोकन,
को त्यागकर व्हाइटस्पेस
के एक फ्लैट की सूची पर कि स्ट्रिंग परिवर्तित कर सकते हैं (धन्यवाद, सुधार के लिए) Sasq:
["<", "html", ">",
"<", "head", ">",
"<", "title", ">", "My HTML Page", "</", "title", ">",
"</", "head", ">",
"<", "body", ">",
"<", "p", "style", "=", "\"", "special", "\"", ">",
"This paragraph has special style",
"</", "p", ">",
"<", "p", ">",
"This paragraph is not special",
"</", "p", ">",
"</", "body", ">",
"</", "html", ">"
]
वहाँ कई tokenizing हो सकता है गुजरता निम्नलिखित काल्पनिक HTML पार्सर कर सकता की तरह भी उच्च स्तर टोकन की एक सूची के लिए टोकन की एक सूची कन्वर्ट करने के लिए (जो अब भी है एक फ्लैट सूची):
("<html>", {}, [
("<head>", {}, [
("<title>", {}, ["My HTML Page"]),
]),
("<body>", {}, [
("<p>", {"style": "special"}, ["This paragraph has special style"]),
("<p>", {}, ["This paragraph is not special"]),
]),
])
:
[("<html>", {}),
("<head>", {}),
("<title>", {}), "My HTML Page", "</title>",
"</head>",
("<body>", {}),
("<p>", {"style": "special"}),
"This paragraph has special style",
"</p>",
("<p>", {}),
"This paragraph is not special",
"</p>",
"</body>",
"</html>"
]
तो पार्सर एक पेड़ या ग्राफ जो ऐसे तरीके से उपयोग करने के लिए और अधिक सुविधाजनक है में स्रोत पाठ का प्रतिनिधित्व करता है के रूप में टोकन की उस सूची में कनवर्ट करता है/इस कार्यक्रम के द्वारा हेरफेर इस बिंदु पर
, पार्सिंग पूर्ण है; और यह उपयोगकर्ता के पेड़ की व्याख्या करने, इसे संशोधित करने आदि के लिए है।
देखो http://en.wikipedia.org/wiki/Lexical_parser पर एक बहुत ही संक्षिप्त परिचय के लिए; वहां 'पार्सिंग' आलेख भी देखें। और एचटीएमएल शोधक, कुछ बिंदु पर, बिल्कुल यही करता है। – Piskvor
एचटीएमएल एजिलिटी पैक ओपन सोर्स है और यह टोकननाइज़र पर आधारित है। http://htmlagilitypack.codeplex.com/ – Oded
यदि आप सी (ओकंपल, लिस्प) पढ़ सकते हैं, तो yacc/lex (ocamlyacc/ocamllex, cl-yacc/cl-lex ...) पर कुछ ट्यूटोरियल्स को देखने का प्रयास करें। आप कोड से जल्दी मूल बातें समझेंगे। अगर आप कोड पढ़ सकते हैं। – Amadan