aboutsummaryrefslogtreecommitdiff
path: root/luxc/src/lux/lexer.clj (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-11-29- No longer removing empty lines from source code when reading it. Now ↵Eduardo Julian1-1/+1
lexing them as whitespace. - Shifted version of the compiler to 0.3.1
2015-09-29- Cleaned-up the comments from the codebase.Eduardo Julian1-4/+2
2015-09-11- Implemented the with-open macro.Eduardo Julian1-16/+16
- Cleaned-up a bit the tag-generation macro "deftags".
2015-08-30- Added unit-tests for lexer.Eduardo Julian1-14/+6
- Fixed a bug when lexing multi-line comments.
2015-08-29- Added some compiler optimizations.Eduardo Julian1-9/+9
- Removed the (unnecessary) lux/control/dict & lux/control/stack modules. - The "Meta" type is now a record instead of a variant.
2015-08-28Changed the license from EPL to MPL.Eduardo Julian1-7/+4
2015-08-28Due to several performance issues and my inability to optimize them away due ↵Eduardo Julian1-33/+33
to too many corner cases, I decided the abandon the path towards a more mathematical implementation of tuples & variants.
2015-08-23- Restructuring how sums & products work [part 1]Eduardo Julian1-33/+33
2015-08-08More refactoring of tags, this time for reader, lexer & parser.Eduardo Julian1-17/+36
2015-08-06Started factoring out the tags used in variants within the compiler.Eduardo Julian1-9/+9
2015-07-19Added copyright notice on all files that missed it.Eduardo Julian1-0/+8
2015-07-12- Added the beginnings of the standard library.Eduardo Julian1-10/+10
- Fixed several bugs.
2015-05-24- Cleaned-up a few things in lux.luxEduardo Julian1-10/+9
- Replace most instances of "=" with ".equals". - Added an optimization to lux.type/type= that drastically speeds-up type comparisons.
2015-05-22- Corrected the indentation issues in the lux files.Eduardo Julian1-28/+28
- Temporarily reverted back to forward apply-analysis. - Fixed an error in lux.base/show-ast. - Reader now only returns a tuple instead of a full-blown #Meta variant. - Reader now doesn't cut the strings that it reads. Instead, the "cursor" just moves around, indicating where to read. - Inlined some calculations that previously relied on try-all%.
2015-05-14- Multi-line comments have returned.Eduardo Julian1-9/+18
2015-05-07- Eliminated #eval-ctor from the HostState and now #seed is used for the ↵Eduardo Julian1-15/+15
same purpose. - Optimized some code a bit.
2015-05-06- Made several optimizations to the compiler.Eduardo Julian1-1/+3
- Also removed several unused definitions.
2015-05-06- Removed all the unnecesary comments.Eduardo Julian1-13/+3
- Made some changes to the way type-checking is performed on variants, records & tuples in order to improve the speed of type-checking.
2015-05-03- Added ;;self-prefixes.Eduardo Julian1-5/+9
- Added a version of ` that prefixes unprefixed idents with the current module's name. - The special forms no longer require unprefixed symbols and work with anything (in order to work properly with the new `).
2015-05-03- Fixed escaping in charsEduardo Julian1-1/+1
- Added 2 custom pattern-matchers (\ & \or) & gensym - Added signatures & structures ^_^
2015-05-03- The type syntax is finally complete ^_^Eduardo Julian1-4/+9
- Finally, the "case" macro has been implemented ^_^ - The macro-expand function is also alive! - Corrected the field-access special forms so they take their field as a symbol instead of text. - Macros are no longer stored inside the CompilerState as (Maybe Macro), but as Macro. - Void is implemented as - Fixed an error when parsing escaped characters in text. - Fixed an error in the reader in which parsing regex2 gave back a 2-vector instead of a 2-tuple.
2015-04-28- Fixed some errors in lux.lux.Eduardo Julian1-1/+4
- Added the ability to export from def. - Added an optimized lambda macro. - Finished record analysis & compilation. - Fixed a bug in tuple, function & record analysis wherein AppT wasn't being performed prior to analysing the expression under analysis. - Fixed several bugs wherein "fail*" was needed but "fail" was used. - Added a case for records in base;show-ast. - Made an improvement for AllT in type;show-type. - Corrected an error in pattern-matching compilation wherein casts weren't being performed to make sure the source datum was of the necessary type for PM. - Removed the (now unnecessary) lux/macro.
2015-04-26- lux/analyser/def has been renamed to lux/analyser/module.Eduardo Julian1-3/+3
- Renamed a few defs in lux.lux. - No more type-test shortcut inside lux/analyser/lux. - Defs are now being classified as either (#ValueD <type>) or (#MacroD <macro>).
2015-04-08- Renamed exec to |do.Eduardo Julian1-21/+21
- :let within |do now uses |let instead of let. - The analyser now does totality analysis and structures the pattern matching, with the compiler only compiling the generated structures. - Local bindings with case' can now be prefixed arbitrarily. (Note: must do the same with functions).
2015-04-02- Identifiers with just a semi-colon in front now have "lux" as their ↵Eduardo Julian1-6/+4
module, instead of the local module. (e.g. ;map, #;Cons, ;All) - The type-checker now takes into account 2 types: an exo-type (imposed by outside forces) and an endo-type (generated through inference) - Fixed a few bugs in the analyser and the type-system. - &type/solve* is now the actual type-checker and &type/solve invokes solve* with an empty fixpoint environment. - The exo-type of Statements is Nothing. - variants, tuples and def' are being analyzed properly now.
2015-03-22- Fixed the bug that caused the infinite look while compiling the file.Eduardo Julian1-2/+1
2015-03-22- Added code-cursors (file-name, line-number, column-number) as metadata on ↵Eduardo Julian1-32/+33
lexer nodes & parser nodes.
2015-03-21- Added the reading-phase and it's associated structure as the mediator ↵Eduardo Julian1-48/+35
between raw source-code and the lexing-phase.
2015-03-21- Added module-name aliasing.Eduardo Julian1-13/+37
2015-03-20[2nd Super Refactoring That Breaks The System: Part 6]Eduardo Julian1-25/+25
- Corrected more bugs in the system.
2015-03-19[2nd Super Refactoring That Breaks The System: Part 5]Eduardo Julian1-1/+1
- Changed indents to symbols. - Corrected some of the bugs in the system. Many more still awaiting fixes.
2015-03-18[2nd Super Refactoring That Breaks The System: Part 4]Eduardo Julian1-23/+21
- Finished moving the codebase to use the functions from lux.base with the "&" prefix.
2015-03-17[2nd Super Refactoring That Breaks The System: Part 2]Eduardo Julian1-57/+58
- Compiler-state is now using Lux record-format. - Went from Error+Ok to Left+Right.
2015-03-08- Implemented comparisons and equalities for int, long, float & double.Eduardo Julian1-2/+2
- The lexer now allows "-" in front of numbers to get negative numbers.
2015-03-08- In lux.lux, fixed a bug in the "list" macro that rendered it unusable.Eduardo Julian1-1/+1
- Fixed a bug when compiling lambda instantiation (the bug had to do with compiling the env variables passed to the closure). - Fixed a bug in the lexer wherein the backquote (`) wasn't being recognized.
2015-02-18[Refactor]Eduardo Julian1-8/+8
- Split lux/analyser/env into "env" & "def" modules. - Renamed lux/analyser/util to "base".
2015-02-18Corrections to the super-refactoring: part 4Eduardo Julian1-7/+7
2015-02-10Super refactoring that breaks the system: Part 1Eduardo Julian1-1/+1
2015-01-22WARNING: BrokenEduardo Julian1-31/+31
[Enhancements] - Restructured the lexer a bit. - Restructured the parser a lot. - Changed the syntax a bit. - Module-names are now separated from def-names by a colon (e.g. module/submodule:var) - i+ -> iadd, i- -> isub, i* -> imul, i/ -> idiv - Added a (incomplete) way to annotate defs. Currently, only serves to mark defs as macros. - Removed "import" and "use". "require" is meant to be the way to load modules. - Did some major refactoring, cleaning and upgrading in the analyser. Though there is still some work pending.
2015-01-20[Enhancements]Eduardo Julian1-68/+47
- Simplified lexer. - Parser now does cleanup of comments & white-space, plus balancing of parens/brackets/braces and checking for even number of elements in records. - Lexer & parser now share state.
2015-01-19[Cleanup]Eduardo Julian1-27/+5
- Removed a lot of useless comments & logging. - Removed the useless test1.lux file.
2015-01-10* Changed the language so variants now store their elements directly, ↵Eduardo Julian1-4/+7
instead of relying on a tuple. * Changed the pattern-matching and variant generation code accordingly. * Also changed a bit the special form for defining classes.
2015-01-03- Boolean is now BoolEduardo Julian1-9/+9
- Integer is now Int - Float is now Real - String is now Text
2015-01-03The language officially has a name: Lux (stylized as "lux").Eduardo Julian1-3/+3
2015-01-03- Beginning to implement compiler in the language itself.Eduardo Julian1-1/+1
- The language can now handle more symbols on identifiers.
2015-01-03The language now supports macros.Eduardo Julian1-1/+1
2014-12-16Added some pseudo pattern-matching (only extracting simple data, without ↵Eduardo Julian1-5/+6
exploring inner structure or doing any testing).
2014-12-16+ Strings now have escape characters.Eduardo Julian1-4/+46
+ Characters have been added. % Unicode support is missing...
2014-12-13+ Removed "module" special form.Eduardo Julian1-4/+4
+ Fixed a bug that was preventing multi-line comments from being truly multi-line.
2014-12-07Fixed the bug that was causing &lexer/lex-form to be used unbound.Eduardo Julian1-38/+28