Reusing KHTMLs CSS parser for a KDevelop language plugin

Maksim Orlovich maksim at cs.cornell.edu
Wed Oct 21 21:38:18 BST 2009


<snip>

> Alternatively to the above, are there maybe KHTML APIs I can use that give
>  me a low-level analysis of a given CSS file? I'd need e.g. a list of rule
>  definitions, imports, charset statements, together with line numbers where
>  they occur. That should actually be enough to build a DUChain.

That exists already --- DOM level 2 CSS is exported to C++, see the header 
files dom/css_*.h. It may not be perfect though, since CSS parsing is freaky, 
and very much non-uniform --- pretty much every property requires special 
parsing code to get right; and so you only get an accurate model for things 
KHTML supports; so for example properties with other vendor prefixes would not 
get much info. Also a lot of other implementations like Gecko simply chose to 
ignore parts of DOM2 CSS, so some methods may not have had much real-life 
testing..

There is no line number info, though; and I am not sure def/use is the right 
abstraction, either --- CSS is pattern matched, after all, in a fairly complex 
way. 

> Note that most of the above could be applied to other languages as well,
>  most notably JavaScript/ECMA Script and XML/HTML/XHTML.

HTML/XML DOM is public as well. ES AST is way too tied to the implementation 
to be made public, and getting useful dataflow for that abomination of the 
language is borderline impossible (though I suppose kdevelop can afford to be 
unsound?); however it may be possible to abstract something via KJSAPI

Thanks,
Maks





More information about the kde-core-devel mailing list