1. 11 Oct, 2015 1 commit
    • Damien George's avatar
      repl: Add paste mode to friendly REPL, entered via CTRL-E. · 46a11028
      Damien George authored
      Use CTRL-E to enter paste mode.  Prompt starts with "===" and accepts
      all characters verbatim, echoing them back.  Only control characters are
      CTRL-C which cancels the input and returns to normal REPL, and CTRL-D
      which ends the input and executes it.  The input is executed as though
      it were a file.  The input is not added to the prompt history.
      46a11028
  2. 01 Oct, 2015 1 commit
  3. 05 May, 2015 1 commit
  4. 29 Apr, 2015 1 commit
  5. 28 Apr, 2015 2 commits
  6. 19 Apr, 2015 1 commit
  7. 16 Apr, 2015 1 commit
    • Damien George's avatar
      py: Overhaul and simplify printf/pfenv mechanism. · 7f9d1d6a
      Damien George authored
      Previous to this patch the printing mechanism was a bit of a tangled
      mess.  This patch attempts to consolidate printing into one interface.
      
      All (non-debug) printing now uses the mp_print* family of functions,
      mainly mp_printf.  All these functions take an mp_print_t structure as
      their first argument, and this structure defines the printing backend
      through the "print_strn" function of said structure.
      
      Printing from the uPy core can reach the platform-defined print code via
      two paths: either through mp_sys_stdout_obj (defined pert port) in
      conjunction with mp_stream_write; or through the mp_plat_print structure
      which uses the MP_PLAT_PRINT_STRN macro to define how string are printed
      on the platform.  The former is only used when MICROPY_PY_IO is defined.
      
      With this new scheme printing is generally more efficient (less layers
      to go through, less arguments to pass), and, given an mp_print_t*
      structure, one can call mp_print_str for efficiency instead of
      mp_printf("%s", ...).  Code size is also reduced by around 200 bytes on
      Thumb2 archs.
      7f9d1d6a
  8. 13 Feb, 2015 1 commit
  9. 08 Feb, 2015 1 commit
  10. 07 Feb, 2015 1 commit
    • Damien George's avatar
      py: Protect mp_parse and mp_compile with nlr push/pop block. · 0bfc7638
      Damien George authored
      To enable parsing constants more efficiently, mp_parse should be allowed
      to raise an exception, and mp_compile can already raise a MemoryError.
      So these functions need to be protected by an nlr push/pop block.
      
      This patch adds that feature in all places.  This allows to simplify how
      mp_parse and mp_compile are called: they now raise an exception if they
      have an error and so explicit checking is not needed anymore.
      0bfc7638
  11. 29 Jan, 2015 1 commit
  12. 28 Jan, 2015 2 commits
  13. 20 Jan, 2015 1 commit
  14. 15 Jan, 2015 1 commit
    • Paul Sokolovsky's avatar
      pyexec: Add event-driven variant pyexec_friendly_repl(). · 87bc8e2b
      Paul Sokolovsky authored
      pyexec_friendly_repl_process_char() and friends, useful for ports which
      integrate into existing cooperative multitasking system.
      
      Unlike readline() refactor before, this was implemented in less formal,
      trial&error process, minor functionality regressions are still known
      (like soft&hard reset support). So, original loop-based pyexec_friendly_repl()
      is left intact, specific implementation selectable by config setting.
      87bc8e2b
  15. 01 Jan, 2015 1 commit
  16. 29 Dec, 2014 1 commit
  17. 20 Dec, 2014 3 commits
  18. 08 Dec, 2014 1 commit
    • Paul Sokolovsky's avatar
      modsys: Add sys.print_exception(exc, file=sys.stdout) function. · 46c3ab20
      Paul Sokolovsky authored
      The function is modeled after traceback.print_exception(), but unbloated,
      and put into existing module to save overhead on adding another module.
      Compliant traceback.print_exception() is intended to be implemented in
      micropython-lib in terms of sys.print_exception().
      
      This change required refactoring mp_obj_print_exception() to take pfenv_t
      interface arguments.
      
      Addresses #751.
      46c3ab20
  19. 05 Dec, 2014 1 commit
    • Damien George's avatar
      py: Optimise lexer by exposing lexer type. · a4c52c5a
      Damien George authored
      mp_lexer_t type is exposed, mp_token_t type is removed, and simple lexer
      functions (like checking current token kind) are now inlined.
      
      This saves 784 bytes ROM on 32-bit unix, 348 bytes on stmhal, and 460
      bytes on bare-arm.  It also saves a tiny bit of RAM since mp_lexer_t
      is a bit smaller.  Also will run a bit more efficiently.
      a4c52c5a
  20. 27 Nov, 2014 1 commit
  21. 26 Oct, 2014 1 commit
    • Damien George's avatar
      stmhal: Improve REPL control codes; improve pyboard.py script. · bc1488a0
      Damien George authored
      Improvements are:
      
      2 ctrl-C's are now needed to truly kill running script on pyboard, so
      make CDC interface allow multiple ctrl-C's through at once (ie sending
      b'\x03\x03' to pyboard now counts as 2 ctrl-C's).
      
      ctrl-C in friendly-repl can now stop multi-line input.
      
      In raw-repl mode, use ctrl-D to indicate end of running script, and also
      end of any error message.  Thus, output of raw-repl is always at least 2
      ctrl-D's and it's much easier to parse.
      
      pyboard.py is now a bit faster, handles exceptions from pyboard better
      (prints them and exits with exit code 1), prints out the pyboard output
      while the script is running (instead of waiting till the end), and
      allows to follow the output of a previous script when run with no
      arguments.
      bc1488a0
  22. 22 Oct, 2014 2 commits
  23. 05 Oct, 2014 2 commits
  24. 23 Sep, 2014 1 commit
    • Damien George's avatar
      py: Free non-interned strings in the parser when not needed. · 52b5d76a
      Damien George authored
      mp_parse_node_free now frees the memory associated with non-interned
      strings.  And the parser calls mp_parse_node_free when discarding a
      non-used node (such as a doc string).
      
      Also, the compiler now frees the parse tree explicitly just before it
      exits (as opposed to relying on the caller to do this).
      
      Addresses issue #708 as best we can.
      52b5d76a
  25. 20 Jul, 2014 1 commit
  26. 26 Jun, 2014 1 commit
  27. 19 Jun, 2014 1 commit
  28. 16 Jun, 2014 1 commit
  29. 10 May, 2014 1 commit
  30. 03 May, 2014 4 commits
  31. 02 May, 2014 1 commit