Dylan Baker
bd4aa9d124
Fix error handling and bug where let bindings stay in scope
6 년 전
Dylan Baker
c93190c567
Implement let bindings
6 년 전
Dylan Baker
2f5f91b2fe
Alphabetize methods
6 년 전
Dylan Baker
9ae2911337
Reorganize bin.js a little
6 년 전
Dylan Baker
380e81044f
Remove stray semicolon
6 년 전
Dylan Baker
fc7978ce6b
Evaluate conditionals
6 년 전
Dylan Baker
b9e4a1f908
Move AST nodes into one file
6 년 전
Dylan Baker
9662adf8aa
Implement definitions
6 년 전
Dylan Baker
ca4684994c
Evaluate booleans and strings
6 년 전
Dylan Baker
63d4d4b735
Evaluate lambda functions
6 년 전
Dylan Baker
369853af3e
Replace compiler with evaluator
This class exposes two functions. `evalNode` take an AST node and evaluates it down to simplest terms. `eval` takes an array of AST nodes and calls evalNode on each of them. I don’t think we’re quite ready to be producing HTML yet so let’s not get ahead of ourselves.
6 년 전
Dylan Baker
4d957c60a0
Core functions should return Oslo types, not JS types
6 년 전
Dylan Baker
f4f4f18106
Add comparison functions to core env
6 년 전
Dylan Baker
76c6eac9b5
Implement conditionals
Currently I'm relying on JavaScript's semantics
around truthiness. I think I'm going to retain
that ease of use (i.e. `(if list #t #f)` should
return true if the list has more than 0 elements,
etc) but I want to specify that behavior myself.
6 년 전
Dylan Baker
c833db2f94
LOL I forgot how Lisp works
6 년 전
Dylan Baker
3e5a873054
Prettier :/
6 년 전
Dylan Baker
b83126524d
Make all functions lambdas for now
6 년 전
Dylan Baker
06ab1b52d4
Compile function applications (named and lambda)
6 년 전
Dylan Baker
7a9b1a6727
Create simple compiler class
Just numbers and strings for now
6 년 전
Dylan Baker
0b4d63ee91
Make sure source gets passed in as a string
I noticed that if you passed in just a number, JS
would helpfully parse that and then
`source.length` was undefined, which broke the
lexer.
6 년 전
Dylan Baker
bffecce670
Add lambdas
6 년 전
Dylan Baker
90d84dbb6f
Prettier
6 년 전
Dylan Baker
67ca84857f
Prettier
6 년 전
Dylan Baker
4b3ce29206
Remove resolver and compiler, add define to parser
6 년 전
Dylan Baker
91730231df
Saving state
6 년 전
Dylan Baker
3b6525e29f
Prettier
6 년 전
Dylan Baker
497af0aa34
Implement test helper functions
6 년 전
Dylan Baker
296e94f25a
Add .DS_Store and .oslo files to gitignore
I keep test .oslo files around and I hate not
having a clean repo.
6 년 전
Dylan Baker
681a88a755
Clean up unused stuff
6 년 전
Dylan Baker
a3e6a6df66
Move list of selfclosing tags into its own module
6 년 전
Dylan Baker
60c6d9a24a
Don't include ="" for attributes with empty string
6 년 전
Dylan Baker
20ab139ca7
Add doctype to list of self closing tags
I added upper and lowercase because that seemed
preferable to always casting every html function
name to lowercase.
6 년 전
Dylan Baker
f77ad26a69
Allow empty strings
6 년 전
Dylan Baker
581c99f794
Rewrite AST and compiler to be more normal
6 년 전
Dylan Baker
c7c40f7df7
Implement number and boolean types
6 년 전
Dylan Baker
64e2ab8eb0
Implement some very basic error handling
It's a little hacky and not very clean but it's
working for now.
6 년 전
Dylan Baker
802884b135
Runn prettier
6 년 전
Dylan Baker
31f584d688
Allow for self-closing tags
6 년 전
Dylan Baker
ebae8a3536
Rework main parser logic
The way that we were doing it before was going to
make it very difficult to implement any sort of
error handling or extension to the language.
6 년 전
Dylan Baker
d82d4ed612
Don't wrap eaches in an empty function call node
Because I was assuming that every expression
started with a literal, calls to `each` were
getting wrapped by a functionCall node with no
functionName, which was subsequently ignored by
the compiler. This removes all of that uselessness
6 년 전
Dylan Baker
ebc21f694d
Redo map as each, still playing with the syntax
6 년 전
Dylan Baker
db64e79472
Implement mapping
6 년 전
Dylan Baker
c9c2e34940
Check for blank cli arguments
6 년 전
Dylan Baker
d46f25c589
Run prettier
6 년 전
Dylan Baker
d60e736fec
Allow using special characters in literals
6 년 전
Dylan Baker
4ae6bd884b
Implement CLI
6 년 전
Dylan Baker
69dc0975d0
Manage the whitespace produced by the compiler
6 년 전
Dylan Baker
564b4808e9
Allow using variables as attribute values
6 년 전
Dylan Baker
ef0845237f
Allow whitespace while between quotes
What was happening was that spaces were allowed in
all literals to account for quoted strings, but
this meant that two identifiers in a row would get
parsed as a single literal. This commit sets a
flag to allow whitespace in literals when a quote
is encountered and then unsets that flag at the
next quote.
6 년 전
Dylan Baker
709986560e
First try at the compiler
No variables or conditionals or anything yet, just
the basic ability to turn s-expressions into HTML.
6 년 전