python syntax additions to support indentation insensitivity/generated code
recently i've been writing code that generates a python program from a source file containing intermixed python code and non-python constructs, which get converted into python. similar things have been done in many other languages -- consider, for example, the way php is embedded into web pages. unfortunately, doing this is really hard in python because of its whitespace sensitivity. i suggest the following simple change: in addition to constructs like this: block: within-block statement within-block statement ... out-of-block statement python should support block:: within-block statement within-block statement ... end out-of-block statement the syntax is similar, but has an extra colon, and is terminated by an `end'. indentation of immediate-level statements within the block is unimportant. mixed-mode code should be possible, e.g.: block-1:: within-block-1 statement within-block-1 statement block-2: within-block-2 statement within-block-2 statement within-block-1 statement ... end in other words, code within block-2 is indentation-sensitive; block-2 is terminated by the first immediate-level statement at or below the indentation of the `block-2' statement. similarly, in this: [A] block-1:: [B] within-block-1 statement [C] within-block-1 statement [D] block-2: [E] within-block-2 statement [F] within-block-2 statement [G] block-3:: [H] within-block-3 statement [I] within-block-3 statement [J] end [K] within-block-2 statement [L] within-block-1 statement [M] ... [N] end the indentation of lines [D], [E], [F], [G], [K] and [L] is significant, but not any others. that is, [E], [F], [G], and [K] must be at the same level, which is greater than the level of line [D], and line [L] must be at a level less than or equal to line [D]. all other lines, including [H], [I] and [J], can be at any indentation level. also, line [D] can be at any level with respect to line [C]. the idea is that a python code generator could easily mix generated and hand-written code. hand-written code written in normal python style could be wrapped by generated code using the indentation-insensitive style; if the generated code had no indentation, everything would work as expected without the generator having to worry about indentation. i don't see too many problems with backward-compatibility here. the double-colon shouldn't cause any problems, since that syntax isn't legal currently. `end' could be recognized as a keyword only following a double-colon block; elsewhere, it could still be a variable. ben
On Sun, Apr 30, 2006, Ben Wing wrote:
recently i've been writing code that generates a python program from a source file containing intermixed python code and non-python constructs, which get converted into python.
Please take this to comp.lang.python (this is not in-and-of-itself inappropriate for python-dev, but experience indicates that this discussion will probably not be productive and therefore belongs on the general newsgroup). -- Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/ "Argue for your limitations, and sure enough they're yours." --Richard Bach
participants (2)
-
Aahz
-
Ben Wing