KML is an XML Grammar used to encode and transport representations of geographic data for display in an earth browser. Put simply: KML encodes what to show in an earth browser, and how to show it. KML uses a tag-based structure with nested elements and attributes and is based on the XML standard.
To help you in writing an LL Grammar, we have developed a tool to analyze a Grammar and determine if it is LL(1).
A jar file containing the class files can be downloaded here. Place this jar file in your class path before running the analyzer. LLAnalyze requires JDK 1.2. In the CSUGLAB, use g:\jdk1.2.2\bin\java (NT) or /usr/local/jdk1.2.1 (Solaris).
You can also look at the source code for LLAnalyze. JLex is required to build it.
Full support for extended regular expressions (those with intersection and complement); Support for some kinds of cycles in Grammar; DFA-based operation; Unicode support; C++ only, requires a modern compiler; Lexical analyzers can be configured to get symbols from any input class (built-in support for std::istream, std::wistream and FILE *); Designed to work with Whale, but can work standalone or interface to other parsers.