-
Notifications
You must be signed in to change notification settings - Fork 149
Adding the converted version of booc. #90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
…without the LINQ pseudo-keywords stomping on the rest of the available identifier names, and to declare expressions in booish and debug them. Working on the transformations now.
… makes this much simpler. Moved query expression transformer to the macro expansion phase of the pipeline and removed all unnecessary type-related code. SELECT, WHERE, ORDERBY and CAST transformations are working correctly now. Still poking at transparent identifiers.
…without the LINQ pseudo-keywords stomping on the rest of the available identifier names, and to declare expressions in booish and debug them. Working on the transformations now.
… makes this much simpler. Moved query expression transformer to the macro expansion phase of the pipeline and removed all unnecessary type-related code. SELECT, WHERE, ORDERBY and CAST transformations are working correctly now. Still poking at transparent identifiers.
In order to make the compiler self hosted we need a bootstrapping compiler, which can simply be a previous binary build of it. I think that before starting to merge the port into the main repository we need to adapt the build system to take this into account so that instead of adding new code to the project we actually replace the old one at the same time. |
What sort of changes are needed? All of the code compiles under the current (0.9.5) Boo compiler. |
Ideally we should be able to do a checkout of the repository on a brand new computer and just by doing There are different approaches to solve this issue, some compilers have a specific bootstrapping compiler implemented in a different language (i.e. C) that is able enough to build a version of the target compiler which in turn is used to build the rest of the project. However, since in .Net the binary assemblies are portable, perhaps the easier solution is to include the assemblies for the current compiler and use to bootstrap the compilation of the project. In essence this should be the flow of the build process:
So by including a minimum version of the Boo compiler in its binary form (.Net/mono runnable) on the repository, we can use it to build the compiler .boo sources with the only requirement to have a working .Net environment. That's a cleaner solution in my opinion that keeping the current C# sources in the repository just for bootstrapping purposes. |
The existing C# source should probably be kept around (in a separate section of the repository) for verifiability purposes, (Trusting Trust etc,) but yes, that's basically what I had in mind: use binaries of the current compiler as our bootstrapping compiler. |
Adding the new templates, plus the generated AST.
Converting the AST is still a WIP, but I think the templates are correct now.
… LINQ syntax to Boo ASTs
Update from Bamboo
Merge Boo-linq
Fixing multiple internal compiler errors and code generation bugs in the Boo compiler and standard libraries.
Update from Bamboo
Merge from Boo-linq
…ject whose value is not null
# Conflicts: # src/Boo.Lang.Compiler/Steps/InjectCallableConversions.cs # src/Boo.Lang.Compiler/TypeSystem/Services/AnonymousCallablesManager.cs # src/Boo.Lang.Compiler/TypeSystem/Services/CodeReifier.cs
Sync with master
Fixing issue boo-lang#131
Fixing issue boo-lang#131
Adding a tie-breaking rule to type resolution, to select a less generic concrete type over a more generic concrete type. For example, prefer IEnumerable[of int] over IEnumerable[of Nullable[of int]].
Adding a tie-breaking rule to type resolution, to select a less generic concrete type over a more generic concrete type. For example, prefer IEnumerable[of int] over IEnumerable[of Nullable[of int]].
Sync with master
It's not polite to stomp someone else's LexicalInfo
Sync with master
Sync with master
Sync with master
Merging "scope stack" caching
Sync with master
Sync with master
Ensuring that `CheckMembersProtectionLevel` will visit `self` and `super` method references (constructors) correctly.
Merge pull request boo-lang#145 from masonwheeler/master
Fixing issue boo-lang#143
# Conflicts: # src/Boo.Lang.Compiler/Ast/AstNodePredicates.cs # src/Boo.Lang.Compiler/Boo.Lang.Compiler.csproj # src/Boo.Lang.Parser/BooExpressionLexer.cs # src/Boo.Lang.Parser/BooExpressionLexerTokenTypes.cs # src/Boo.Lang.Parser/BooExpressionLexerTokenTypes.txt # src/Boo.Lang.Parser/BooLexer.cs # src/Boo.Lang.Parser/BooParserBase.cs # src/Boo.Lang.Parser/BooTokenTypes.cs # src/Boo.Lang.Parser/BooTokenTypes.txt
Ensure that invalid implicit conversions provide useful errors
Compiler performance
Synchronizing with Master
Converted booc from C# to Boo.