public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTResource resource = new XenonASTResource(); var args = Lexer.ConsumeArgList(true, "assetname", "type"); resource.AssetName = args["assetname"]; resource.Assettype = args["type"]; return(resource); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTLiturgyImage litimage = new XenonASTLiturgyImage(); Lexer.GobbleWhitespace(); var args = Lexer.ConsumeArgList(false, "asset"); litimage.AssetName = args["asset"]; return(litimage); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTReading reading = new XenonASTReading(); Lexer.GobbleWhitespace(); var args = Lexer.ConsumeArgList(true, "name", "reference"); reading.Name = args["name"]; reading.Reference = args["reference"]; return(reading); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTSermon sermon = new XenonASTSermon(); Lexer.GobbleWhitespace(); var args = Lexer.ConsumeArgList(true, "title", "reference", "preacher"); sermon.Title = args["title"]; sermon.Reference = args["reference"]; sermon.Preacher = args["preacher"]; return(sermon); }
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) { XenonASTElementCollection liturgys = new XenonASTElementCollection(); // assume all tokens inside braces are litrugy commands // only excpetions are we will gobble all leading whitespace in braces, and will remove the last // character of whitespace before last brace Lexer.GobbleWhitespace(); // optional params if (Lexer.Inspect("(")) { var args = Lexer.ConsumeArgList(false, "startnewline"); if (args["startnewline"] == "true") { ForceSpeakerStartOnNewline = true; } Lexer.GobbleWhitespace(); } Lexer.GobbleandLog("{", "Expected opening brace at start of liturgy."); Lexer.GobbleWhitespace(); XenonASTLiturgy liturgy = CompileSubContent(Lexer, Logger); liturgys.Elements.Add(liturgy); while (!Lexer.Inspect("}")) { Lexer.GobbleandLog("#", "Only '#break' command recognized in '#liturgy' block"); if (Lexer.Inspect("break")) { Lexer.GobbleandLog("break"); Lexer.GobbleWhitespace(); } else { Logger.Log(new XenonCompilerMessage() { ErrorMessage = "Expected Command 'break'", ErrorName = "Unrecognized Command", Generator = "Compiler - XenonASTLiturgy", Inner = "", Level = XenonCompilerMessageType.Error, Token = Lexer.CurrentToken }); } liturgy = CompileSubContent(Lexer, Logger); liturgys.Elements.Add(liturgy); } Lexer.GobbleandLog("}", "Missing closing brace for liturgy."); return(liturgys); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTTextHymn textHymn = new XenonASTTextHymn(); Lexer.GobbleWhitespace(); var args = Lexer.ConsumeArgList(true, "title", "name", "tune", "number", "copyright"); textHymn.HymnTitle = args["title"]; textHymn.HymnName = args["name"]; textHymn.Tune = args["tune"]; textHymn.Number = args["number"]; textHymn.CopyrightInfo = args["copyright"]; if (Lexer.Inspect("(")) { Lexer.Consume(); string sisoverlay = Lexer.ConsumeUntil(")"); bool isoverlay; bool.TryParse(sisoverlay, out isoverlay); textHymn.IsOverlay = isoverlay; Lexer.Consume(); } Lexer.GobbleWhitespace(); Lexer.GobbleandLog("{", "Expect opening brace for body of hymn. Verses go here"); Lexer.GobbleWhitespace(); while (Lexer.Inspect("#")) { Lexer.GobbleandLog("#", "Expecting '#verse' command"); // only valid command at this point (so far) is a verse if (Lexer.Inspect(LanguageKeywords.Commands[LanguageKeywordCommand.Verse])) { Lexer.GobbleandLog(LanguageKeywords.Commands[LanguageKeywordCommand.Verse], "Only verse command is valid here"); XenonASTHymnVerse verse = new XenonASTHymnVerse(); textHymn.Verses.Add((XenonASTHymnVerse)verse.Compile(Lexer, Logger)); } Lexer.GobbleWhitespace(); } Lexer.GobbleWhitespace(); Lexer.GobbleandLog("}", "Missing closing brace on hymn command."); return(textHymn); }
public IXenonASTElement Compile(Lexer Lexer, XenonErrorLogger Logger) { XenonASTElementCollection litverses = new XenonASTElementCollection(); // assume all tokens inside braces are litrugy commands // only excpetions are we will gobble all leading whitespace in braces, and will remove the last // character of whitespace before last brace Lexer.GobbleWhitespace(); var args = Lexer.ConsumeArgList(true, "title", "reference"); Title = args["title"]; Reference = args["reference"]; Lexer.GobbleWhitespace(); Lexer.GobbleandLog("{", "Expected opening brace at start of litverse."); Lexer.GobbleWhitespace(); XenonASTLiturgyVerse litverse = CompileSubContent(Lexer, Logger); litverses.Elements.Add(litverse); while (!Lexer.Inspect("}")) { Lexer.GobbleandLog("#", "Only '#break' command recognized in '#litverse' block"); if (Lexer.Inspect("break")) { Lexer.GobbleandLog("break"); Lexer.GobbleWhitespace(); } else { Logger.Log(new XenonCompilerMessage() { ErrorMessage = "Expected Command 'break'", ErrorName = "Unrecognized Command", Generator = "Compiler - XenonASTLitVerse", Inner = "", Level = XenonCompilerMessageType.Error, Token = Lexer.CurrentToken }); } litverse = CompileSubContent(Lexer, Logger); litverses.Elements.Add(litverse); } Lexer.GobbleandLog("}", "Missing closing brace for litverse."); return(litverses); }
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); }