Michael Foord 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. >
*so*... compile only returns a code object if the source code is complete. An indented code block is only complete when there is a dedent that completes the block. PyCF_DONT_IMPLY_DEDENT is a 'parser flag' which says "don't imply a dedent at the end of a block until we actually get an explicit dedent". All the best, Michael http://www.ironpython.info/ > 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 > > 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, > > Michael > http://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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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 >>> [email protected] >>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >>> _______________________________________________ >>> Users mailing list >>> [email protected] >>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >>> >>> >>> >>> >> _______________________________________________ >> Users mailing list >> [email protected] >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >> _______________________________________________ >> Users mailing list >> [email protected] >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >> >> >> > > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > > _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
