[CMake] List of 'Reserved Words'

Michael Jackson mike.jackson at bluequartz.net
Wed Nov 19 14:26:55 EST 2008


On Nov 19, 2008, at 12:24 PM, Matthew Woehlke wrote:

> Michael Jackson wrote:
>> I am parsing the $CMAKE_BUILD/Docs/cmake.docbook file. There is  
>> just enough information with the tags to parse out all the  
>> commands, variables and properties. What _is not_ in that file are  
>> the "reserved words" or "special arguments" in any _easy_ tags. I  
>> can parse the usage tags and do something like you are doing with  
>> the sed scripts and pull those special words out. (I have to admit  
>> that I have only a passing clue what is going on in those sed  
>> statements).
>
> Ah, yes, I see. Looks about equally reliable compared to what I am  
> doing, perhaps slightly more so due to better separation of the  
> usage sections, but I'm betting the text help comes from the markup  
> anyway, so the style of parsing I'm doing is probably pretty safe.
>
> Not that I can think of any drawbacks to your approach either,  
> except that it would be harder for me to write (having not written  
> SAX parsers before ;-) ). In a nutshell though, we seem to have  
> similar approaches.

I can do the initial writing if you want. I have everything in place  
to add another generator to the code.

>
>
> To elaborate on the sed... basically, what I'm doing is extracting  
> patterns that look like '<command>[(].*[)]' where '<command>' is the  
> command whose help I am looking at, and the '.*' portion is  
> permitted to contain newlines. I then split the internal '.*'  
> portion into words, remove any '][' characters, and extract keywords  
> from the resulting list, where a "keyword" matches '[[:upper:] 
> [:digit:]_]+' (that is, consists entirely of upper-case letters,  
> digits, and '_', in any combination).
>
>>   The XML parser that I wrote is a SAX type (based on Expat) and  
>> some boost stuff for the string processing. If we can convert it to  
>> something that does not depend on the whole of KDE that would  
>> probably help us both, which is what I am interested in.
>
> I'm not sure what KDE dependencies you have; my script needs only:  
> bash, sed, awk, wc, and cmake (and rm is nice but not strictly  
> required). IOW, other than cmake itself, it needs no libraries, no  
> compiler, and nothing a non-broken Linux system would be without,  
> and would probably be fine on any reasonable POSIX system with bash  
> and GNU sed.

I guess I wasn't really clear. My current code only has an expat and  
boost dependency. I took at look at Qt 4.4 and it seems to have the  
same type of parser (SAX) that I would need. I can probably replace  
the boost string algorithms with something from Qt along with the sort  
algorithms. I was going this direction because the generator could be  
built/run from a larger build phase of KDE (which I thought was  
supposed to compile on windows also) which is why I was trying to stay  
as platform agnostic as possible.
    I guess my end goal would be for the actual CMake build to  
optionally generate these components and maybe host them for downloads  
on the CMake web site. This would give the impression that these are  
"official" language syntax files produced by CMake. I know the  
TextMate is pretty much plug-and-play. The Eclipse XML code may be the  
same way although I would need to look into that.

>
>
>>  As I said before, if my code proves useful I would be happy to  
>> give it to the KDE project for their use. The Boost project will  
>> also want to use it as I am brining the CMake build system up to  
>> date for that project also.
>
> Ah, competing code :-). I could also donate my script; part of it is  
> devoted to extracting and replacing the lists in cmake.xml, but the  
> parts that generate the lists output simple line-delineated text  
> files.

Sorry again. Not Clear. What I _really_ meant to say was that Boost  
may have more interest in the future in editors that have good CMake  
support as their build system moves toward CMake and away from BJam  
(if that ever completely occurs).

>
>
>>   I think it would be beneficial to work together on this. My only  
>> comment on a shell script is that it wouldn't work directly on  
>> windows without MSys or Cygwin installed.
>
> True, but I'm not sure an XML-parsing library is a "lighter"  
> dependency than bash. Besides, you don't need to /run/ it on Windows  
> anyway :-).
>
> Should I post the whole script?

Sure. You can post the script on the CMake Wiki or post it here and  
I'll get it up on the Wiki really soon. I am going to try and  
integrate your sed search algorithms into my generator and see what  
happens. I'll also take a look at the Kate syntax xml file and add  
that also. I don't have a linux box currently so I'll have to just  
validate the xml. Some one else will have to test it.

Unless you have Kate running on OS X...


> -- 
> Matthew
> Please do not quote my e-mail address unobfuscated in message bodies.


_________________________________________________________
Mike Jackson                  mike.jackson at bluequartz.net
             www.bluequartz.net



More information about the CMake mailing list