Parsing multi-language files
Sascha Cunz
mail at SaCu.DE
Sun Feb 29 14:08:04 UTC 2004
Hi Roberto, hi all,
does the current class store / AST have the ability to correctly parse files
that are put together out of more than one language? I know that this might
sound very wired at first glance. And i doubt that such a thing is posible
currently. But let me explain how real that problem is:
Basicly, we can consider everything that embeds into HTML/XHTML/XML as forming
a multi lanugage file. Thus, our PHP support will fit into this category.
Generally spoken, the PHP part of a php file can be seen just like a special
part of an xml file (though it could be even more). PHP is nothing more than
a preproccessor, which proccesses everything contained inside "<?php" and
"?>, thus many people use it for embedding small parts of code into static
HTML pages.
Out of this arise some problems:
- Using Ctrl+D might cause a C/C++-Style comment inside a block of the file
which is not php ( This one has a bug report )
- Using Doxygen-style documenter might cause a comment being inserted before
the <?php tag. imagine: "<html>\n<body>\n<php function test(){..."
( this is just a rare case, but it could happen; though this results just
from a talk between Jonas and me on irc. )
- If we ever intend to create a "add function"-dialog to php support, it
might get confused by this, too.
The only way to solve this ( as far as i can see ), we would need to know
which blocks of a file are actually php. Maybe we could store a simple list
of "blocks" saying:
byte 0 - 167 is HTML
byte 168 - 230 is an embedded CSS
byte 231 - 240 is HTML
byte 241 - 299 is an embedded java script
byte 300 - 380 is HTML
byte 381 - 553 is PHP
byte 554 - 594 is HTML
Further, i could imagine creating a parser for xml files, which would allow us
to use problem reporter in conjunction with xhtml/xml files. This one could
provide the data needed.
So finally, is this vision absolute horror? Or is it something that could be
done in order to provide better support for web-scripting?
Cheers Sascha
More information about the KDevelop-devel
mailing list