public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTProgram p = new XenonASTProgram(); // gaurd against empty file if (Lexer.InspectEOF()) { Logger.Log(new XenonCompilerMessage() { Level = XenonCompilerMessageType.Message, ErrorName = "Empty Project", ErrorMessage = "Program contains no symbols.", Token = Lexer.EOFText }); return(p); } do { XenonASTExpression expr = new XenonASTExpression(); Lexer.GobbleWhitespace(); expr = (XenonASTExpression)expr.Compile(Lexer, Logger); if (expr != null) { p.Expressions.Add(expr); } Lexer.GobbleWhitespace(); } while (!Lexer.InspectEOF()); return(p); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTAutoFitImage fullimage = new XenonASTAutoFitImage(); Lexer.GobbleWhitespace(); var args = Lexer.ConsumeArgList(false, "asset"); fullimage.AssetName = args["asset"]; Lexer.GobbleWhitespace(); InvertColor = false; if (!Lexer.InspectEOF()) { if (Lexer.Inspect("(")) { Lexer.Consume(); string val = Lexer.ConsumeUntil(")"); if (val == "true") { fullimage.InvertColor = true; } Lexer.Consume(); Lexer.GobbleWhitespace(); } } if (!Lexer.InspectEOF()) { if (Lexer.Inspect("[")) { Lexer.Consume(); if (Lexer.Inspect("(")) { Lexer.Consume(); fullimage.Options = Lexer.ConsumeUntil(")"); Lexer.Consume(); Lexer.Consume(); Lexer.GobbleWhitespace(); } else { fullimage.KeyType = Lexer.ConsumeUntil("]"); Lexer.Consume(); Lexer.GobbleWhitespace(); } } } return(fullimage); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTFitImage fullimage = new XenonASTFitImage(); Lexer.GobbleWhitespace(); var args = Lexer.ConsumeArgList(false, "asset"); fullimage.AssetName = args["asset"]; if (!Lexer.InspectEOF()) { if (Lexer.Inspect("[")) { Lexer.Consume(); fullimage.KeyType = Lexer.ConsumeUntil("]"); Lexer.Consume(); Lexer.GobbleWhitespace(); } } return(fullimage); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTVideo video = new XenonASTVideo(); Lexer.GobbleWhitespace(); StringBuilder sb = new StringBuilder(); var args = Lexer.ConsumeArgList(false, "assetname"); video.AssetName = args["assetname"]; if (!Lexer.InspectEOF()) { if (Lexer.Inspect("[")) { Lexer.Consume(); video.KeyType = Lexer.ConsumeUntil("]"); Lexer.Consume(); Lexer.GobbleWhitespace(); } } return(video); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTScript script = new XenonASTScript(); Lexer.GobbleWhitespace(); StringBuilder sb = new StringBuilder(); Lexer.GobbleandLog("{"); Lexer.GobbleWhitespace(); while (!Lexer.InspectEOF()) { sb.Append(Lexer.Consume()); if (Lexer.Inspect("}")) { script.Source = sb.ToString(); Lexer.Consume(); break; } } return(script); }