| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit brings back string concatenations in match/cons/string literals at
the top level. It does not bring back concatenation of [] lists. For example,
you can write:
match Foo
"hi
"there
BUT NOT:
match Foo
[Hi] [There]
The concatenation (of both forms) was removed when bare sends were added, due
to the ambiguity created. However, removing these concatenations has proven
quite annoying.
This change re-introduces the ambiguity, which maybe we should do something
about by detecting when it is likely via mis-alignments of the strings, or
making some other change to sends.
refs #95
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The string class is no longer containing uints, now signed. Convert the input
strings to vectors of uint8s, since the julia code generator currently supports
only uint8.
Use numerical representation of 'a' since we have no way to separate single
lits from double lits and cast them in the julia test case translator
Don't try to construct AbstractString, use String.
Array constructor Array{Int, 1}(undef, 20) must take undef as first arg.
Verify we have julia 1.0 or later in configure script.
refs #91
|
| |
|
|
|
|
|
| |
If ulimit -a is used, javac may not run. Added a configure check to verify it
runs. refs #92
|
|
|
|
|
| |
Not doing these in colm. Relying on th existing correct implementation. Also
removed the naming conflict between left and right recursion.
|
|
|
|
|
|
|
|
|
|
|
| |
Redid the sublist implementation in colm such that the new produciton is placed
immediately above the place where it it was first referenced. Works better in
the face of of namesapce usage
Also removed the repeat implementations. These are already correct in the C++
program so no sense in redoing them. This is in line with the notion that we
can use colm transformations for new language features, before they are
eventually moved into the main program.
|
|
|
|
|
| |
These are allowed, but ignored in bootstrap0 and bootstrap1. We can then use
them in the rewriter to log changes we made.
|
|
|
|
|
|
| |
Every class representing Colm types has a program and tree pointer and some
common functions. Moving this out allows us to pass the common base to the
repeat iterator and eliminate the first argument to the iterator.
|
|
|
|
|
|
| |
The Julia language has changed enough to break our tests. Disable them for now.
refs #91
|
|
|
|
|
| |
This flag is not for production building. Bootstrapped build should always be
used.
|
|
|
|
|
|
|
|
|
|
| |
Added an iterator for repeats that is independent of left/right recursion.
Using it in colm load and tests. Allows us to remove the special case for
repeat/list types in the export.
The new iterator is implemented as a non-recursive generic tree iterator.
refs #90
|
| |
|
|
|
|
|
|
| |
Also moved the implementation to C++ because for the time being we need to generate
an appropriate iterator in the export interface. Need a genereric repeat
iterator to avoid this situation.
|
| |
|
| |
|
| |
|
|
|
|
| |
Would be great to be able to test these before checking in and pushing.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Addded a configure check to see if the ASM tests are appropriate. If we can
build a basic ASM file with .rodata references, assume we can run the tests.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Julia requires a large virtual address space and if a system limits address
space size with ulimit then julia will abort. Catch it in configure, rather
than resulting in failed tests.
|
|\ |
|
| |
| |
| |
| | |
Partially fix #87
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Attempting to do so results in the following circular dependency:
loadcolm.cc -> if3.h -> boostrap2 -> loadcolm.cc
Fix this by using the source file loadfinal.cc, which is not is not compiled
directly, but rather included in sources. It is used for both bootstrap2 and
colm, but these programs each use separate gen/if[23].h headers, so this file
is included by distinct source files that each bring in the appropriate
dependency, then include this file.
|
|
|
|
|
|
|
|
|
|
|
| |
1. The version.h file needs to be listed in BUILT_SOURCES ahead of it's use in
a sources list.
2. The gen/if[123].h files, even though they are listed in BUILT_SOURCES, are
not getting built ahead of their use in include files. Solution here is to list
dependency explicitly. See note in source file.
refs #87
|
| |
|
|
|
|
|
|
|
| |
Using a transformation pass in prog.lm to create definitions for left-recursive
productions and sub-productions. So far just a sketch. Not all production
element forms are transformed and there can only be one sub-production in a
whole program. refs #74 refs #83 refs #84
|
|
|
|
|
|
|
|
| |
Using a build step that generates multiple files is not convenient to use with
automake because it prevents us from using BUILT_SOURCES and requries that we
specify some dependencies manually. Testing out the idea of building an
archive, rather than multiple files, then using separate make rules to pull out
the individual files.
|
|
|
|
|
|
| |
Added a third bootstrap program. This program can accept a colm grammar in
colm, plus transformation also in colm, allowing us to implement additional
syntax/semantics using colm transformations.
|
|
|
|
|
| |
Ooof this makes a big output file. May need to do something about it.
refs #82
|
|
|
|
|
| |
Generating the utf8 encoded unicode defintitions that are referenced in the Go
specification. Can start to build the grammar with these definitions on hand.
|
|
|
|
|
|
| |
This is a quick hack to address issue #81. Since colm uses signed alphabets it
is not possible to specify ranges that cross zero in hex, which is desirable
for utf8. For example 0x20 .. 0xa0 will throw an error in a signed char mode.
|
|
|
|
|
| |
These both need to be updated and tested for code in the wild. They were
originally developed to showcase colm features.
|
|
|
|
|
| |
We also want some testing/validation support for each grammar. This dir will
get quite messy if we move files.
|
| |
|
|
|
|
| |
let a = 0. + 1.- 2.3;
|
| |
|
|
|
|
| |
refs #79
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rather than exclude ? + and *, exclude ` from literals and allow backtick
literals to be end quoted.
Allows us to follow the literal with an operator without using a space between
the two, which is very unnatural. Can write: [`,`?].
If we forget to the end quote it we end up with literal that (probably) does
not exist. It should generate an error, rather than silently give us something
we don't want.
Note that ] is still excluded from literals in positions 2+.
|
|
|
|
|
|
| |
This reverts some aspects of bb02b4be1b9db09c27cbd11df28a89e5b1ed332f. There
were some other changes in this commit we want to keep, so it was undone
manually.
|
|
|
|
| |
This reverts commit bd8de42f05975c262a6ecd156d8a6fbc50aa0de5.
|
|
|
|
| |
This reverts commit 38f0495adf51690aa7b71800a907e2e59da49651.
|