11 months agoRemoved unnecessary astpathspec file. Modified build task to collect main
Mira Ayre [Tue, 3 Dec 2019 17:00:16 +0000 (17:00 +0000)]
Removed unnecessary astpathspec file. Modified build task to collect
together all sFiles into an array ready for the extractor. Base
directory and main file for extractor created. Made a few classes in new
extraction.d file. Added 'extractor' as a valid value for log level
ready for internal extractor logging.

11 months agoWrote remaining semantic analysis code. Returns a complete sFile with
Mira Ayre [Tue, 3 Dec 2019 13:57:21 +0000 (13:57 +0000)]
Wrote remaining semantic analysis code. Returns a complete sFile with
all information. Only real thing missing or that needs work is the
processing of locations, which at the moment is just the location
information of the top-level node being used to create the class, where
this would be different for a lot of expressions and things.

11 months agoStarted making semantic classes.
Mira Ayre [Fri, 29 Nov 2019 16:44:35 +0000 (16:44 +0000)]
Started making semantic classes.

11 months agoStarted rewrite of semantic analyser to be more generalised (to more
Mira Ayre [Fri, 29 Nov 2019 14:52:48 +0000 (14:52 +0000)]
Started rewrite of semantic analyser to be more generalised (to more
easily deal with modifications to grammar) and apply to new grammar.
Currently imports files and imports. File members TBS.

11 months agoAdded call to new getprojopts() to process project file.
Mira Ayre [Fri, 29 Nov 2019 14:36:47 +0000 (14:36 +0000)]
Added call to new getprojopts() to process project file.

11 months agoModified testproject/test.op to match new design for project ini file.
Mira Ayre [Fri, 29 Nov 2019 14:34:46 +0000 (14:34 +0000)]
Modified testproject/test.op to match new design for project ini file.

11 months agoWrote simple ini file parser and added method to lib/options.d to use
Mira Ayre [Fri, 29 Nov 2019 14:32:42 +0000 (14:32 +0000)]
Wrote simple ini file parser and added method to lib/options.d to use
collected options to set root namespace of project.

11 months agoFixed build manifest. Remember!: build steps are in distinct shells, so
Mira Ayre [Fri, 29 Nov 2019 11:48:19 +0000 (11:48 +0000)]
Fixed build manifest. Remember!: build steps are in distinct shells, so
directory changes won't apply in following steps.

11 months agoFixed small bug where invalid parameters weren't actually checked for.
Mira Ayre [Fri, 29 Nov 2019 11:45:25 +0000 (11:45 +0000)]
Fixed small bug where invalid parameters weren't actually checked for.

11 months agoCreated .build.yml to (ideally) run a build of the whole compiler on
Mira Ayre [Fri, 29 Nov 2019 11:36:40 +0000 (11:36 +0000)]
Created .build.yml to (ideally) run a build of the whole compiler on
each push. Added log.plain() for the purpose of debugging logging.
Rewrote commandline argument parsing with a simpler system that collects
all parameters and arguments *before* trying to extract specific
information and validity-check. Removed all semantics code ready for
rewrite. Adjusted syntax to correctly pass down to PostfixExs. Improved
make.sh to use 2 makefiles to more-effectively determine when to make
and run the LALR generator - however this is still a bit buggy and more
files are being built than are necessary. Fixed test source file to be
syntactically correct to new syntax spec.

11 months agoAdded 'time' to call of LALR tool. Revised all grammar based on
Mira Ayre [Thu, 28 Nov 2019 15:58:14 +0000 (15:58 +0000)]
Added 'time' to call of LALR tool. Revised all grammar based on
revisions and completed first draft of lib/syntax.d. Semantic analyser
will need a rewrite.

11 months agoRe-styled code to follow draft O style guide.
Mira Ayre [Wed, 27 Nov 2019 11:46:17 +0000 (11:46 +0000)]
Re-styled code to follow draft O style guide.

11 months agoRefactored all source so no line exceeds 80 characters. The only
Mira Ayre [Wed, 27 Nov 2019 10:05:20 +0000 (10:05 +0000)]
Refactored all source so no line exceeds 80 characters. The only
exceptions are parser/actions.d which is programmatically generated, and
lib/syntax.d which is in the middle of being rewritten.

11 months agoImproved source location management. Now tracks a start and end
Mira Ayre [Tue, 12 Nov 2019 14:38:00 +0000 (14:38 +0000)]
Improved source location management. Now tracks a start and end
location, rather than a start location and a length, as this makes it
much easier to manage locations of compound costructions containing
multiple tokens.

Made some minor grammar changes.

Added more semantic analysis, including Attribute analysis. Started
adding location properties to semantic classes as well as assigning the
value of the location to them in the construction methods.

11 months agoRefactored compiler so symbols and separators are stored as their
Mira Ayre [Tue, 12 Nov 2019 11:42:03 +0000 (11:42 +0000)]
Refactored compiler so symbols and separators are stored as their
strings by the lexer rather than as an index to an array of said strings
as they were getting converted straight back to strings in the semantic
analyser anyway.

11 months agoAdjusted logging in lalr generator to hide leftover bits of progress bar
Mira Ayre [Tue, 12 Nov 2019 10:26:36 +0000 (10:26 +0000)]
Adjusted logging in lalr generator to hide leftover bits of progress bar

Made changes to grammar so the only *named* classes,
methods, and attributes that are allowed are as whole statements or as
file/class members where applicable. Having a named
class/method/variable declaration in the middle of an expression is
completely useless, so only literals are allowed now.

Removed documentation field on imports as they are not necessary.

Moved DeclCondition fields into the Class/Attr/Method etc. forms.

Added makeExpression method that currently returns a dummy. Wrote
methods for making Enums.

11 months agoAdded root namespace to OPTIONS, redid semantic processing to better
Mira Ayre [Fri, 8 Nov 2019 12:24:49 +0000 (12:24 +0000)]
Added root namespace to OPTIONS, redid semantic processing to better
represent meaning rather than structure. Improved makefile to only
rebuild and rerun lalr tool if needed (if syntax.d has been changed).

11 months agoMoved program options into lib so it is more easily-accessible from
Mira Ayre [Thu, 7 Nov 2019 10:02:03 +0000 (10:02 +0000)]
Moved program options into lib so it is more easily-accessible from
everywhere. Rewrote argument parsing to use more comfortable syntax.
Logging has been improved to have values for specific components to get
internal logging from to make debugging easier (and the parser faster).

11 months agoFixed path in lalr tool so it would write output to correct file when
Mira Ayre [Wed, 6 Nov 2019 10:21:00 +0000 (10:21 +0000)]
Fixed path in lalr tool so it would write output to correct file when
being called by make.

11 months agoRemoved README in lalr directory as it isn't really needed. Corrected
Mira Ayre [Tue, 5 Nov 2019 15:26:16 +0000 (15:26 +0000)]
Removed README in lalr directory as it isn't really needed. Corrected
main README and added information on using the makefile.

11 months agoRemoved symlink in lalr directory as it isn't needed. Added 'test'
Mira Ayre [Tue, 5 Nov 2019 15:16:27 +0000 (15:16 +0000)]
Removed symlink in lalr directory as it isn't needed. Added 'test'
target to makefile that will run the compiler against the test project
with common arguments I tend to use.

11 months agoAdjusted the files in the lalr directory as building them from the
Mira Ayre [Tue, 5 Nov 2019 15:12:35 +0000 (15:12 +0000)]
Adjusted the files in the lalr directory as building them from the
makefile required them to reference included files with a 'lalr.'
prefix. Renamed lalr.d to building.d as lalr.lalr made dmd angry.

Can now build project using make, the main motivation of which is to
knock down the build time as parser/actions.d (relocated from
lib/actions.d) doesn't need to be rebuilt every time. This should make
compiler development much more comfortable. It also has the added
benefit of making it much simpler for others to build and run the

11 months agoMoved main compiler files back out of temp directory. Checked everything
Mira Ayre [Mon, 4 Nov 2019 17:10:56 +0000 (17:10 +0000)]
Moved main compiler files back out of temp directory. Checked everything
still compiles and it all looks good.

11 months agoMoved semantic analyser code into subdirectory.
Mira Ayre [Mon, 4 Nov 2019 17:09:56 +0000 (17:09 +0000)]
Moved semantic analyser code into subdirectory.

11 months agoRemoved unnecessary readme.
Mira Ayre [Fri, 18 Oct 2019 12:12:43 +0000 (13:12 +0100)]
Removed unnecessary readme.

11 months agoCreated functioning proof-of-concept semantic analyser. It is able to
Mira Ayre [Fri, 18 Oct 2019 11:50:18 +0000 (12:50 +0100)]
Created functioning proof-of-concept semantic analyser. It is able to
reduce a File and Import, and provides a dummy DeclDef.

11 months agoAdd LICENCE
Mira Ayre [Wed, 16 Oct 2019 09:14:06 +0000 (09:14 +0000)]

11 months agoInitial commit
Mira Ayre [Wed, 16 Oct 2019 09:13:47 +0000 (09:13 +0000)]
Initial commit

11 months agoMove parser code into subdirectory
Mira Ayre [Mon, 4 Nov 2019 17:08:17 +0000 (17:08 +0000)]
Move parser code into subdirectory

11 months agoRemoved unnecessary readme.
Mira Ayre [Fri, 18 Oct 2019 12:11:42 +0000 (13:11 +0100)]
Removed unnecessary readme.

11 months agoMade AST pretty format more compact so there are fewer line wraps. Fixed
Mira Ayre [Fri, 18 Oct 2019 11:49:10 +0000 (12:49 +0100)]
Made AST pretty format more compact so there are fewer line wraps. Fixed
main parser method to return the AST it has just built and not null (why
on earth did I make it do this?!?!).

11 months agoTidied up GLR parser.
Mira Ayre [Tue, 15 Oct 2019 13:07:27 +0000 (14:07 +0100)]
Tidied up GLR parser.

11 months agoFixed bug where the initial action on a newly spawned thread would kill
Mira Ayre [Wed, 9 Oct 2019 09:04:02 +0000 (10:04 +0100)]
Fixed bug where the initial action on a newly spawned thread would kill
the currently running thread.

11 months agoTurned parser from LR to GLR.
Mira Ayre [Tue, 8 Oct 2019 15:28:16 +0000 (16:28 +0100)]
Turned parser from LR to GLR.

11 months agoAdded 3 log messages to the parser that for some reason fixed a bug
Mira Ayre [Mon, 23 Sep 2019 10:34:05 +0000 (11:34 +0100)]
Added 3 log messages to the parser that for some reason fixed a bug
where it would just occasionally decide not to parse a token and error.

11 months agoRemoved obsolete files, leaving only the new LR parsing algorithm.
Mira Ayre [Fri, 20 Sep 2019 14:32:59 +0000 (15:32 +0100)]
Removed obsolete files, leaving only the new LR parsing algorithm.

11 months agoBegan integrating parser with main compiler program.
Mira Ayre [Tue, 3 Sep 2019 16:55:43 +0000 (17:55 +0100)]
Began integrating parser with main compiler program.

11 months agoImplemented output method. Parser now compiles node data into a string
Mira Ayre [Thu, 1 Aug 2019 15:54:34 +0000 (16:54 +0100)]
Implemented output method. Parser now compiles node data into a string
of bytes to a spec (in a comment before the method) and then writes to
stdout. Recommend viewing using xxd as it might fuck your terminal

11 months agoHe's only gone and feckin' dunnit!!!
Mira Ayre [Thu, 1 Aug 2019 15:19:00 +0000 (16:19 +0100)]
He's only gone and feckin' dunnit!!!

Parser no longer loops forever or for really long times. Schema
adjustments will probably be needed sooner or later to account for
edge-cases. Logging in parsing section has been toned down a bit for
readability. Parsed AST is now "tidied" in places to reduce sections
where the tree just ladders through all expression types just to land on
the one expression type that it is. AST is now flattenned post tidying
and a pretty version of the flat tree is displayed as well as the whole
tree version.

The last key section remaining is to spec out the binary output for the
parser and then write the methods for outputting to stdout. After that
is done, it will be possible to start working on the semanticiser (that
will turn the tree of the whole source into a tree of semantic meaning).

11 months agoAdded extra items to the libraries of keywords. These changes will need
Mira Ayre [Wed, 31 Jul 2019 15:48:09 +0000 (16:48 +0100)]
Added extra items to the libraries of keywords. These changes will need
to be reflected in the lexer.

11 months agoCompleted MiniO AST spec in schemas.d. Added more logging and exceptions
Mira Ayre [Wed, 31 Jul 2019 15:36:35 +0000 (16:36 +0100)]
Completed MiniO AST spec in schemas.d. Added more logging and exceptions
to break out of bad places. Lexer will need some changes to add more
content that the parser requires e.g. keywords.

11 months ago<cheesy music>I need to commit more often</cheesy music>
Mira Ayre [Wed, 31 Jul 2019 11:58:36 +0000 (12:58 +0100)]
<cheesy music>I need to commit more often</cheesy music>
Refactored a lot of things. Schemas are now a flat list rather than
being recursive. A schema has a list of forms, each of which have a list
of specs, which store type, data, and multiplicity. The schema is now
defined based on simple string parsing, which made it wonderfully
compact and intuitive.

There is a memory leak somewhere, but I cannot find where. Compiling the
parser seems to use some 280MiB of memory, but only takes a second.
Running the parser takes about 4MiB of memory, but completes instantly.
At the moment, I'm not treating it as an issue. If it gets worse later
on as I flesh out the parser and start doing more complicated things,
then I'll start to look into it.

11 months agoUpdated README
Mira Ayre [Tue, 30 Jul 2019 13:32:38 +0000 (14:32 +0100)]
Updated README

11 months agoExpanded schema somewhat. Added in schema display for debugging.
Mira Ayre [Tue, 30 Jul 2019 13:14:15 +0000 (14:14 +0100)]
Expanded schema somewhat. Added in schema display for debugging.

There is currently an IMMUTABLE ubyte in the schema that's being set to
one value, and then changing each time it's read. Set to 13, first read
is 12, second read is 128. I have no fucking idea what's happening help.

11 months agoParser now able to walk through and recognise simple constructions (see
Mira Ayre [Mon, 29 Jul 2019 10:15:44 +0000 (11:15 +0100)]
Parser now able to walk through and recognise simple constructions (see
schemas.d for details). Current main bug is that a node's type is being
set to 128 somewhere which is causing a range error when indexing into
NTYPES for logging.

11 months agoWrote parsing methods and created basic schema to recognise imports at
Mira Ayre [Fri, 26 Jul 2019 14:34:21 +0000 (15:34 +0100)]
Wrote parsing methods and created basic schema to recognise imports at
the start of a file.

Current bug is with small methods to try and display a tree view of the
AST in the terminal which seems to hang for whatever reason.

11 months agoCreated first __UNTESTED__ implementation of AST schema matching
Mira Ayre [Thu, 25 Jul 2019 15:53:04 +0000 (16:53 +0100)]
Created first __UNTESTED__ implementation of AST schema matching
methods. The idea is that a schema of the whole AST can be created, and
then these methods can be used to check if a treenode (and all of its
children recursively) match the schema (i.e. are valid syntax).

These methods will have proper logging added and tests will need to be
written. A further goal will be to add useful feedback on errors (which
the end user would encounter as syntax error messages pointing to a
location in source code and highlighting the invalid syntax).

11 months agoWrote componentising portion of program. Created SPEC file and started
Mira Ayre [Tue, 23 Jul 2019 14:56:08 +0000 (15:56 +0100)]
Wrote componentising portion of program. Created SPEC file and started
documenting AST for parsing system to be based off.

11 months agoCompleted skeleton program. Reads in input, does nothing with it a few
Mira Ayre [Tue, 23 Jul 2019 09:35:31 +0000 (10:35 +0100)]
Completed skeleton program. Reads in input, does nothing with it a few
times, and then outputs nothing.

11 months agoAdd LICENCE
Mira Ayre [Tue, 23 Jul 2019 08:39:15 +0000 (08:39 +0000)]

11 months agoInitial commit
Mira Ayre [Tue, 23 Jul 2019 08:38:33 +0000 (08:38 +0000)]
Initial commit

11 months agoMove lexer files into subdirectory
Mira Ayre [Mon, 4 Nov 2019 17:06:07 +0000 (17:06 +0000)]
Move lexer files into subdirectory

11 months agoRemoved unnecessary readme.
Mira Ayre [Fri, 18 Oct 2019 12:09:42 +0000 (13:09 +0100)]
Removed unnecessary readme.

11 months agoAllowed extra middle characters in identifiers at end of identifiers, so
Mira Ayre [Mon, 23 Sep 2019 10:08:14 +0000 (11:08 +0100)]
Allowed extra middle characters in identifiers at end of identifiers, so
where 'T1' for instance would not be a valid identifier, it now is.

11 months agoFixed order of tokenising to make sure doc comments don't get caught as
Mira Ayre [Fri, 20 Sep 2019 15:10:36 +0000 (16:10 +0100)]
Fixed order of tokenising to make sure doc comments don't get caught as
line comments.

11 months agoSwitched import lexerclasses to classes due to file rename.
Mira Ayre [Tue, 3 Sep 2019 16:57:27 +0000 (17:57 +0100)]
Switched import lexerclasses to classes due to file rename.

11 months agoNow throws CompilerError exceptions.
Mira Ayre [Mon, 2 Sep 2019 15:45:54 +0000 (16:45 +0100)]
Now throws CompilerError exceptions.

11 months agoNow matches full character set for identifiers.
Mira Ayre [Mon, 2 Sep 2019 14:43:47 +0000 (15:43 +0100)]
Now matches full character set for identifiers.

11 months agoAdded support for underscores to be present in numeric literals.
Mira Ayre [Mon, 2 Sep 2019 10:41:55 +0000 (11:41 +0100)]
Added support for underscores to be present in numeric literals.

11 months agoFixed bug in tokenisier where varstring literals would be improperly
Mira Ayre [Mon, 2 Sep 2019 10:18:51 +0000 (11:18 +0100)]
Fixed bug in tokenisier where varstring literals would be improperly
lexed as a result of a lack of checks for opening braces. Would lead to
whole varstrings being found when it is in fact a varstring start
followed by a string literal.

11 months agoConnected dataifier to rest of program. Removed now redundant files.
Mira Ayre [Mon, 2 Sep 2019 08:41:55 +0000 (09:41 +0100)]
Connected dataifier to rest of program. Removed now redundant files.

11 months agoRenamed files to better represent what they do. Modified main file to
Mira Ayre [Fri, 30 Aug 2019 15:56:04 +0000 (16:56 +0100)]
Renamed files to better represent what they do. Modified main file to
remove enums, classes, and arrays that are now in lib project.

11 months agoUpdated test file.
Mira Ayre [Fri, 2 Aug 2019 11:46:38 +0000 (12:46 +0100)]
Updated test file.

11 months agoAdded additional keywords to account for parser requirements. Generated
Mira Ayre [Wed, 31 Jul 2019 15:50:35 +0000 (16:50 +0100)]
Added additional keywords to account for parser requirements. Generated
new reference token file.

11 months agoChanged test.oc to represent a real program for testing the parser.
Mira Ayre [Tue, 30 Jul 2019 13:41:53 +0000 (14:41 +0100)]
Changed test.oc to represent a real program for testing the parser.

11 months agoFixed title alignment at top of readme.
Mira Ayre [Tue, 23 Jul 2019 08:40:12 +0000 (09:40 +0100)]
Fixed title alignment at top of readme.

11 months agoImplemented output method. Lexer now writes binary token format to
Mira Ayre [Mon, 22 Jul 2019 12:57:17 +0000 (13:57 +0100)]
Implemented output method. Lexer now writes binary token format to
stdout and so is now feature complete! Can now start working on the

11 months agoFixed bug in hexstring lexing method where spaces weren't taken into
Mira Ayre [Mon, 22 Jul 2019 11:48:15 +0000 (12:48 +0100)]
Fixed bug in hexstring lexing method where spaces weren't taken into
account. Implemented float literal tokenising and removed support for
float literals in non-decimal bases for now. Also implemented
identifier tokenising.

11 months agoFixed bug that would append additional bytes to string literals.
Mira Ayre [Wed, 17 Jul 2019 15:13:12 +0000 (16:13 +0100)]
Fixed bug that would append additional bytes to string literals.

11 months agoTokenises string literals now. Investigating bug where a literal ending
Mira Ayre [Tue, 16 Jul 2019 15:56:36 +0000 (16:56 +0100)]
Tokenises string literals now. Investigating bug where a literal ending
in a \u escape will append the 1st and 3rd hex digits to the string e.g.
\u1234 appends "13" to the data.

11 months agoFixed bug that would return incorrect values for characters and escape
Mira Ayre [Tue, 16 Jul 2019 13:44:21 +0000 (14:44 +0100)]
Fixed bug that would return incorrect values for characters and escape
sequences. Added full unit tests to dutil.d

11 months agoStarted writing unit tests. Currently failing rip.
Mira Ayre [Tue, 16 Jul 2019 13:10:39 +0000 (14:10 +0100)]
Started writing unit tests. Currently failing rip.

11 months agoDidn't commit enough. Lots done. Lexing portion of program complete.
Mira Ayre [Tue, 16 Jul 2019 09:30:41 +0000 (10:30 +0100)]
Didn't commit enough. Lots done. Lexing portion of program complete.
Began tokenising portion. Can tokenise trivial tokens and some character
literals, but getescapesequence() isn't behaving correctly.


11 months agoLexer can now identify all token types. Identifiers use a reduced
Mira Ayre [Fri, 12 Jul 2019 23:17:35 +0000 (00:17 +0100)]
Lexer can now identify all token types. Identifiers use a reduced
character set that only covers very basic latin characters and not the
whole spectrum of universal characters as will come later.

Symbols, keywords, and other enumerable tokens are now being tokenised
along with integer literals.

11 months agoStarted working on adding identifier recognition.
Mira Ayre [Fri, 12 Jul 2019 16:03:17 +0000 (17:03 +0100)]
Started working on adding identifier recognition.

11 months agoLexer can now identify hex string literals.
Mira Ayre [Fri, 12 Jul 2019 15:36:33 +0000 (16:36 +0100)]
Lexer can now identify hex string literals.

11 months agoLexer can now identify string literals.
Mira Ayre [Fri, 12 Jul 2019 15:21:05 +0000 (16:21 +0100)]
Lexer can now identify string literals.

11 months agoMade code in getescapesequence() more compact
Mira Ayre [Fri, 12 Jul 2019 13:33:07 +0000 (14:33 +0100)]
Made code in getescapesequence() more compact

11 months agoMade sure that multi-character escape sequences are properly recognised
Mira Ayre [Fri, 12 Jul 2019 13:31:23 +0000 (14:31 +0100)]
Made sure that multi-character escape sequences are properly recognised
by length. Also added remaining single character sequences for special

11 months agoLexer can now recognise character literals.
Mira Ayre [Fri, 12 Jul 2019 13:27:56 +0000 (14:27 +0100)]
Lexer can now recognise character literals.

11 months agoLexer can now recognise boolean literals
Mira Ayre [Fri, 12 Jul 2019 12:44:24 +0000 (13:44 +0100)]
Lexer can now recognise boolean literals

11 months agoLexer can now recognise byte literals.
Mira Ayre [Fri, 12 Jul 2019 12:03:25 +0000 (13:03 +0100)]
Lexer can now recognise byte literals.

11 months agoCan now detect float literals.
Mira Ayre [Fri, 12 Jul 2019 11:58:05 +0000 (12:58 +0100)]
Can now detect float literals.

11 months agoLexer can now recognise all forms of keyword and integer literals.
Mira Ayre [Fri, 12 Jul 2019 11:00:31 +0000 (12:00 +0100)]
Lexer can now recognise all forms of keyword and integer literals.

11 months agoLexer now recognises whitespace, both line and block comments, and
Mira Ayre [Fri, 12 Jul 2019 10:01:14 +0000 (11:01 +0100)]
Lexer now recognises whitespace, both line and block comments, and
symbols. Now shows nicer messages to highlight the contents of the token
that was found.

11 months agoBasis of lexer complete. Lexer will read in from stdin and attempt to
Mira Ayre [Thu, 11 Jul 2019 15:50:35 +0000 (16:50 +0100)]
Basis of lexer complete. Lexer will read in from stdin and attempt to
lex the file. Upon encountering an invalid token, it will display a
helpful error message and show source code context for the error.

11 months agoAdd LICENCE
Mira Ayre [Thu, 11 Jul 2019 09:14:30 +0000 (09:14 +0000)]

11 months agoWrote readme
Mira Ayre [Thu, 11 Jul 2019 09:13:48 +0000 (10:13 +0100)]
Wrote readme

11 months agoInitial commit
Mira Ayre [Thu, 11 Jul 2019 09:05:17 +0000 (09:05 +0000)]
Initial commit

11 months agoCreated lib symlink in lalr directory.
Mira Ayre [Mon, 4 Nov 2019 16:57:35 +0000 (16:57 +0000)]
Created lib symlink in lalr directory.

11 months agoMoved lalr files into subdirectory.
Mira Ayre [Mon, 4 Nov 2019 16:57:01 +0000 (16:57 +0000)]
Moved lalr files into subdirectory.

11 months agoFixed readme.
Mira Ayre [Fri, 18 Oct 2019 12:09:07 +0000 (13:09 +0100)]
Fixed readme.

11 months agoDid lots of things. Now generates a GLALR action table, in which some
Mira Ayre [Tue, 8 Oct 2019 15:25:33 +0000 (16:25 +0100)]
Did lots of things. Now generates a GLALR action table, in which some
cells of the action table contain multiple actions.

11 months agoTidied up source generation to mitigate issues with empty rows (though
Mira Ayre [Fri, 20 Sep 2019 14:41:19 +0000 (15:41 +0100)]
Tidied up source generation to mitigate issues with empty rows (though
they shouldn't be appearing in the first place). Rewrote follow set
generation to work in linear time rather than high-order exponential.
Generator is essentially complete and seems to be working.

11 months agoFirst point at which the LALR generator can be considered feature
Mira Ayre [Thu, 19 Sep 2019 12:34:41 +0000 (13:34 +0100)]
First point at which the LALR generator can be considered feature
complete. Also added progress bars to most sections to give better
perspective of the tool working.

11 months agoMade more modifications to follow sets. The follow sets for the tutorial
Mira Ayre [Tue, 17 Sep 2019 16:43:59 +0000 (17:43 +0100)]
Made more modifications to follow sets. The follow sets for the tutorial
grammar work, but loops infinitely for the real grammar around
Expressions. This will need to be investigated as it's possible the
solution could be in modifying the grammar rather than the generator.

11 months agoLots has been added. Program now gets all the way through to the action
Mira Ayre [Mon, 16 Sep 2019 09:17:31 +0000 (10:17 +0100)]
Lots has been added. Program now gets all the way through to the action
table, but it has issues. Follow sets are not being generated correctly,
which means the action table is not being generated properly either.
All other components seem fine. The follow set issue affects both normal
and extended grammar rules.

11 months ago"oh shit I should commit this"
Mira Ayre [Wed, 11 Sep 2019 14:05:58 +0000 (15:05 +0100)]
"oh shit I should commit this"

11 months agoMoved lalr.d to old file to start rewriting. Created lalrclasses.d to
Mira Ayre [Wed, 11 Sep 2019 08:40:16 +0000 (09:40 +0100)]
Moved lalr.d to old file to start rewriting. Created lalrclasses.d to
store classes only needed by the lalr tool.

11 months agoCopied in learning parser. This will be refactored to be easier to
Mira Ayre [Tue, 10 Sep 2019 15:36:23 +0000 (16:36 +0100)]
Copied in learning parser. This will be refactored to be easier to
maintain and then reworked to fit the O-specific use case.