Jump to content
  • Advertisement
  • entries
    359
  • comments
    237
  • views
    189180

Language Genesis: Setback 1 - Premature Exuberance

Sign in to follow this  
Telastyn

85 views

So after getting the syntax parsing complete I of course went straight at implementing some features. This had two fairly major problems.

1. The syntax parsing wasn't complete. In retrospect parsing "class foo {}" perhaps should not have been my sole benchmark for completeness... it took another 4 hours or so to get "class foo { int y; }" parsing. Debugging parsers is hard.

(For those interested, the problem involved my uneducatedness biting me in the ass again. I realized that something of the form token: (element|token delimiter element) would require special attention, though I failed to generalize the recursion properly...)

2. I overestimated the gains I would get from compiling something almost C# into C#. Sure, a nice optimizing C# compiler is at hand, and the BNF, and libraries and interoperability... but all the lexing/parsing errors are unavailable to me and will need to be replicated. And if I'm going to do anything remotely interesting I'm going to have to do a lot of the type checking symbol table stuff.


It sure does make me appreciate a little more the complexity of such an endeavor and might make me a little more forgiving of the crappy error messages compilers are often giving me.

More Setbacks to come and maybe some actual progress too one day now that I can keep an eye out for coding while a little too pleased with my progress...

"Screenshot of the Day":


CompilationUnit 0:7 - class foo {int y;}
rms.Support.Parsing.Token.Sequence 0:7 - class foo {int y;}
rms.Support.Parsing.Token.Sequence 0:0 -
rms.Support.Parsing.Token.Sequence 0:0 -
rms.Support.Parsing.Token.Series 0:0 -
rms.Support.Parsing.Token.Series 0:0 -
rms.Support.Parsing.Token.Series 0:0 -
rms.Support.Parsing.Token.Series 0:7 - class foo {int y;}
TypeDeclaration 0:7 - class foo {int y;}
ClassDeclaration 0:7 - class foo {int y;}
rms.Support.Parsing.Token.Sequence 0:7 - class foo {int y;}
rms.Support.Parsing.Token.Sequence 0:7 - class foo {int y;}
rms.Support.Parsing.Token.Sequence 0:2 - class foo
rms.Support.Parsing.Token.Sequence 0:2 - class foo
rms.Support.Parsing.Token.Sequence 0:2 - class foo
rms.Support.Parsing.Token.Sequence 0:2 - class foo
rms.Support.Parsing.Token.Sequence 0:1 - class
rms.Support.Parsing.Token.Sequence 0:0 -
rms.Support.Parsing.Token.Sequence 0:0 -
Attributes 0:0 -
rms.Support.Parsing.Token.Series 0:0 -
rms.Support.Parsing.Token.LiteralTokenParser 0:0 -
ClassKeyword 0:1 - class
rms.Support.Parsing.Token.LiteralTokenParser 0:1 - class
Identifier 1:2 - foo
rms.Support.Parsing.Token.TokenTypeParser 1:2 - foo
rms.Support.Parsing.Token.LiteralTokenParser 2:2 -
rms.Support.Parsing.Token.LiteralTokenParser 2:2 -
rms.Support.Parsing.Token.Series 2:2 -
ClassBody 2:7 - {int y;}
rms.Support.Parsing.Token.Sequence 2:7 - {int y;}
rms.Support.Parsing.Token.Sequence 2:6 - {int y;
rms.Support.Parsing.Token.LiteralTokenParser 2:3 - {
rms.Support.Parsing.Token.Series 3:6 - int y;
ClassMemberDeclaration 3:6 - int y;
FieldDeclaration 3:6 - int y;
rms.Support.Parsing.Token.Sequence 3:6 - int y;
rms.Support.Parsing.Token.Sequence 3:5 - int y
rms.Support.Parsing.Token.Sequence 3:4 - int
rms.Support.Parsing.Token.Sequence 3:3 -
Attributes 3:3 -
rms.Support.Parsing.Token.Series 3:3 -
Type 3:4 - int
ValueType 3:4 - int
StructType 3:4 - int
SimpleType 3:4 - int
NumbericType 3:4 - int
IntegralType 3:4 - int
rms.Support.Parsing.Token.LiteralTokenParser 3:4 - int
VariableDeclaratorList 4:5 - y
rms.Support.Parsing.Token.DelimitedTokenSequence 4:5 - y
VariableDeclarator 4:5 - y
VariableIdentifier 4:5 - y
Identifier 4:5 - y
rms.Support.Parsing.Token.TokenTypeParser 4:5 - y
SemiColon 5:6 - ;
rms.Support.Parsing.Token.LiteralTokenParser 5:6 - ;
rms.Support.Parsing.Token.LiteralTokenParser 6:7 - }
SemiColon 7:7 -



Sign in to follow this  


1 Comment


Recommended Comments

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!