[IronPython] [python] Re: Missing Compiler Flag

Michael Foord fuzzyman at gmail.com
Mon Sep 24 23:24:34 CEST 2007



On Sep 21, 10:53 pm, Michael Foord <fuzzy... at voidspace.org.uk> wrote:
> Hello Dino,
>
> I think I've got it. With this flag set, the compile function will
> return None *if* an indented line would be valid.
>
> This allows the interactive interpreter to decide which prompt to
> present the user with (and whether to execute the code it has buffered
> or to wait for more input).
>
> For example (from CPython):
>
> PyCF_DONT_IMPLY_DEDENT = 0x200
> def _compile(source, filename, symbol):
>     return compile(source, filename, symbol, PyCF_DONT_IMPLY_DEDENT)
>
> source = 'def x():\n    print x'
> print _compile(source, 'test', 'single')
> None

I *swear* I got this result when I was experimenting on Friday.
Actually as far as I can tell 'compile' never returns None - it is one
of the functions in the codeop module that does this.

I've just written up what I think is the real difference in my blog
(with the flag set compile throws a SyntaxError for the source above
that isn't newline terminated).

Sorry for the misdirection - but I still think we've basically got the
meaning of the flag nailed.

Michael


>
> Without the flag set returns a code object.
>
> There is similar code in the DLRConsole but it uses
> "Microsoft.Scripting.SourceCodeUnit" which isn't present in 2.0a4.
>
> All the best,
>
> Michaelhttp://www.ironpython.info/
>
>
>
> Dino Viehland wrote:
> > Ok, I closed 12908 as a dup.  If there's no info on it we can always try reverse engineering it (or see if test_codeop fails when we just ignore the flag instead of throwing - that might be the simplest thing to do).
>
> > -----Original Message-----
> > From: users-boun... at lists.ironpython.com [mailto:users-boun... at lists.ironpython.com] On Behalf Of Michael Foord
> > Sent: Friday, September 21, 2007 1:23 PM
> > To: Discussion of IronPython
> > Subject: Re: [IronPython] [python] Re: Missing Compiler Flag
>
> > Dino Viehland wrote:
>
> >> Strangely it doesn't seem to be in the documentation for compile() either :(
>
> >> Do you know what this option does by any chance :) ?
>
> >> I've opened bug #12908
>
> > Great - it can go with 12907. :-)
>
> > It is  something to do with dedenting. ;-)
>
> > I can't find much about it on the intarwebz. It is defined in
> > pythonrun.h and seems to be used in pythonrun.c and it is involved with
> > parsing which makes sense.
>
> > I'll try asking around. *sigh*
>
> > Michael Foord
> >http://www.manning.com/foord
>
> >> (http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=12908) so we at least have it tracked...
>
> >> -----Original Message-----
> >> From: users-boun... at lists.ironpython.com [mailto:users-boun... at lists.ironpython.com] On Behalf Of Michael Foord
> >> Sent: Friday, September 21, 2007 12:57 PM
> >> To: Discussion of IronPython
> >> Subject: [IronPython] Missing Compiler Flag
>
> >> Hello all,
>
> >> There's another problem with the interactive interpreter in IronPython
> >> (it affects the ability to use the code standard library module).
>
> >> The PyCF_DONT_IMPLY_DEDENT compiler flag is not recognised in IronPython.
>
> >> The flag is defined in the 'codeop' standard library module:
>
> >> PyCF_DONT_IMPLY_DEDENT = 0x200          # Matches pythonrun.h
>
> >> Attempting to use this in IronPython:
>
> >>  >>> compile('print x', 'test', 'single', 0x200, 1)
> >> Traceback (most recent call last):
> >>   File , line 0, in <stdin>##1
> >>   File , line 0, in Compile##4
> >> ValueError: unrecognized flags
>
> >> Without this flag the code module can't recognize blocks of code with
> >> several indented lines. :-(
>
> >> All the best,
>
> >> Michael Foord
> >>http://www.manning.com/foord
> >> _______________________________________________
> >> Users mailing list
> >> Us... at lists.ironpython.com
> >>http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >> _______________________________________________
> >> Users mailing list
> >> Us... at lists.ironpython.com
> >>http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
> > _______________________________________________
> > Users mailing list
> > Us... at lists.ironpython.com
> >http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> > _______________________________________________
> > Users mailing list
> > Us... at lists.ironpython.com
> >http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
> _______________________________________________
> Users mailing list
> Us... at lists.ironpython.comhttp://lists.ironpython.com/listinfo.cgi/users-ironpython.com




More information about the Ironpython-users mailing list