Skip to content
Snippets Groups Projects
  1. Mar 30, 2017
    • Michael Aaron Murphy's avatar
      Arrays as First Class Citizens, Part 2 · 0ff1f3c0
      Michael Aaron Murphy authored
      - Implemented array expressions
      - Implemented array syntax handling in the pipelines module
      0ff1f3c0
    • Michael Aaron Murphy's avatar
      Arrays as First Class Citizens, Part 1 · 0b760fb9
      Michael Aaron Murphy authored
      The following features are now implemented
      
      - Let is no longer a builtin command, but part of the language
        - Export has not been ported, but will surely follow shortly
      - Implements ability to create arrays with command array substitutions
        - Array command substitutions currently split based on whitespaces
      - For loops may operate directly on arrays
        - Was already implemented, but it's nice to see it in action
      - In addition, brace expansions also create arrays
        - Because logically, each permutation is a new element
      - Arrays may be accessed with the @ sigil
        - Braced Arrays aren't yet supported
      - Powers (exponents) have been implemented for let arithemtic
      
      ```ion
      for i in @[echo one two three]
          echo $i
      end
      ```
      
      ```ion
      let array = one-{up,down}
      echo @array
      ```
      
      However, much more work is to be done. Progress is bein tracked in
      issue #254. Most notably, the largest missing feature is the array syntax
      for manually creating new arrays.
      0b760fb9
  2. Mar 26, 2017
  3. Mar 25, 2017
  4. Mar 24, 2017
    • Michael Aaron Murphy's avatar
      Improve Syntax Validator · 566264c4
      Michael Aaron Murphy authored
      566264c4
    • Michael Aaron Murphy's avatar
      Handle Empty Braces · c3902745
      Michael Aaron Murphy authored
      c3902745
    • Michael Aaron Murphy's avatar
      Implement Brace Ranges · 2b6fc0c6
      Michael Aaron Murphy authored
      This will implement support for brace ranges:
      
      echo {a..z}
      echo {z..a}
      echo {A..Z}
      echo {Z..A}
      echo {1..10}
      echo {10..1}
      echo {-50..0}
      ```
      2b6fc0c6
    • Michael Aaron Murphy's avatar
      f0b2066e
    • Michael Aaron Murphy's avatar
    • Michael Aaron Murphy's avatar
      Rewrite Shell Expansion Module · dbd04a2d
      Michael Aaron Murphy authored
      This work required a lot of mental effort to complete, but the results
      are more than worth it. Not only is the new code easier to read, manage,
      and extend, but it is faster and provides better syntax parsing than
      what we had before.
      
      - Rewrote the 'WordIterator'
        - Reimplemented Brace Words
        - Implemented Nested Branches
        - Reimplemented Variable Words
        - Implemented Process Words
        - Reimplemented Tilde Words
        - Reimplemented Normal Words
        - Reimplemented Whitespace Words
        - Reimplemented Quote Handling
        - No more Result error checking
      - Rewrote Brace Expansion
        - Implemented Nested Branches
        - Words are now properly collected before expansion
      - Rewrote Variable Expansion
        - The WordIterator does all the work here
        - Module removed as it is no longer required
      - Shell expansion now correctly returns a vector of strings
      - Implemented an ArgumentSplitter for parsing for expressions
        - Does not yet handle parsing processes correctly
        - Shamelessly copied from my Parallel project
      - Performance Improved ++
      
      With this out of the way, I will be implementing more features on top of
      this really soon. Arrays will become first class citizens soon, and the
      syntax validation layer will see much more work.
      dbd04a2d
  5. Mar 22, 2017
  6. Mar 21, 2017
  7. Mar 19, 2017
    • Michael Aaron Murphy's avatar
      Validate Syntax in StatementSplitter · f7e67728
      Michael Aaron Murphy authored
      Each statement will now be validated for correct syntax. When an
      error is found, a descriptive error will be printed to standard
      error and that statement will be skipped.
      
      The two types of errors that are curretly detected are unterminated
      subshells and unescaped parenthesis in the wrong place. More types
      will be added to this logic in the near future, such as unterminated
      braces or invalid characters in brace logic.
      
      This is the first step towards an upcoming brace expansion rewrite
      that I am planning to perform.
      f7e67728
  8. Mar 18, 2017
    • Michael Aaron Murphy's avatar
      Eliminate Some Memory Copies · 78ea6c29
      Michael Aaron Murphy authored
      This will merge the glob expansion method with the existing expansion method so that arguments will not need to be cloned twice. In addition, this will use a draining iterator in the expansion method and skip the expansion check for the first argument. The build_command method is also improved to use a draining iterator instead of checking each argmument.
      78ea6c29
    • Michael Aaron Murphy's avatar
      Build Builtin Map Once · 49ee1a6a
      Michael Aaron Murphy authored
      This change will build the builtin map at the beginning of the program instead of building it every time a command is executed.
      49ee1a6a
  9. Mar 15, 2017
  10. Mar 14, 2017
  11. Mar 13, 2017
  12. Mar 12, 2017
  13. Mar 10, 2017
  14. Mar 09, 2017
Loading