public void CanParseFromString() { var p = new BxlParser(); p.Parse(@"a ()"); p.Parse("a bc"); }
private static void MainTest(string src, string trg, bool result) { var p = new BxlParser(); var srca = p.Parse(src, "c", BxlParserOptions.NoLexData).Element("x").Attributes().First(); var c = new SingleCondition(srca); var trge = p.Parse(trg, "c", BxlParserOptions.NoLexData).Element("x"); var res = c.IsMatch(trge); Assert.AreEqual(result, res); }
public IEnumerable<XElement> CollectBxl(BxlParserOptions options = BxlParserOptions.None) { var bxl = new BxlParser(); return from file in Collect() let text = File.ReadAllText(file) select bxl.Parse(text, file, options); }
public Parameter internalGet(string code) { var bxls = myapp.files.ResolveAll("data", "*.bxl", true, null); var parser = new BxlParser(); foreach (string bxl in bxls) { if(bxl.Contains(".bak"))continue; var x = parser.Parse(File.ReadAllText(bxl)); var pxs = x.XPathSelectElements("//paramlib/param"); foreach (XElement px in pxs) { var result = new Parameter(); if (bxl.Contains("/sys/")) { result.Level = "sys"; } else if (bxl.Contains("/usr/")) { result.Level = "usr"; } else if (bxl.Contains("/mod/")) { result.Level = "mod"; } px.applyTo(result); if(!_cache.ContainsKey(result.Code)) { _cache[result.Code] = result; } if(result.Code==code) { return result; } } } return new Parameter {Code = code, Name = code,Level = "usr"}; }
private static void Execute(string file) { var parser = new BxlParser(); try{ var xml = parser.Parse(File.ReadAllText(file), file, opts); if (useoutfile) { Console.WriteLine("File: " + file + " processed"); File.WriteAllText(file + ".xml", xml.ToString()); } else { Console.WriteLine("<!-- FILE : " + file + "-->"); Console.WriteLine(xml.ToString()); } } catch (Exception ex) { var er = new XElement("error", ex.ToString()); if (useoutfile) { File.WriteAllText(file + ".error.xml", er.ToString()); } Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("<!-- FILE : " + file + "-->"); Console.WriteLine(er.ToString()); Console.ResetColor(); } }
public void ValidExprTermination() { IBxlParser p = new BxlParser(); XElement res = p.Parse("x (a,b) s"); Console.WriteLine(res); }
/// <summary> /// Установка контекста /// </summary> /// <param name="bSharps">Массив кода на B#</param> public void SetContext(string[] bSharps) { var parsed = bSharps.Select(_ => BxlParser.Parse(_)); var compiled = BSharpCompiler.Compile(parsed); SetContext(compiled); }
public void AnonCodeNotOverrideDirectlySetId() { String bxl = @"a id=1 a"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl).Elements().First(); Console.WriteLine(res); Assert.AreEqual("1", res.Attr("id")); }
public IEnumerable <XElement> CollectBxl(BxlParserOptions options = BxlParserOptions.None) { var bxl = new BxlParser(); return (from file in Collect() let text = File.ReadAllText(file) select bxl.Parse(text, file, options)); }
public void Setup() { var bxl = new BxlParser(); var reader = new LoadPackageReader(); var xml = bxl.Parse(LivingScript); var pkgs = reader.Read(xml); packages = new LoadPackageSet(pkgs); gen = new LoadScriptGenerator(); }
public void AnonymousSupport() { String bxl = @" test1 c x=1 'anonymous'"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); }
public void CannotUseNestedIfBrokenBrakesExpression() { String bxl = @"test1 qwerty=( nested (expression[x{2]}) ) "; IBxlParser p = new BxlParser(); Assert.Throws <BxlException>(() => p.Parse(bxl)); }
public void CannotUseExtraBeginExpressions() { String bxl = @"test1 qwerty=((( (nested (expression[x{2}]) ) "; IBxlParser p = new BxlParser(); Assert.Throws <BxlException>(() => p.Parse(bxl)); }
public void CanUseOptions() { String bxl = @"test1 a b c"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl, "qqqq", BxlParserOptions.NoLexData | BxlParserOptions.OnlyIdAttibute | BxlParserOptions.SafeAttributeNames | BxlParserOptions.ExtractSingle); Console.WriteLine(res); Assert.AreEqual(res.Attributes().First().Name.LocalName, "__id"); }
public void CanUseTextContentSimpleLiteral() { String bxl = @"test1 : qwerty "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Value, "qwerty"); }
public void CanUseUseEmptyStringInAttributeValue() { String bxl = @"test q="""" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("q")).Value, ""); }
public void CanUseEscapedCharacters() { String bxl = @"test ""q\""q""=""r\""r"" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("q\"q".Escape(EscapingType.XmlName))).Value, "r\"r"); }
public void CanUseSingleLineStringAsAttributeValue() { String bxl = @"test1 x='q q' "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("x")).Value, "q q"); }
public void CanUseSingleLineStringAsAttributeName() { String bxl = @"test1 'w w' = ""q q"" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("w w".Escape(EscapingType.XmlName))).Value, "q q"); }
public void MultilineComentaryInsideOfElement(string code) { var bxl = code; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl, options: BxlParserOptions.NoLexData); Console.WriteLine(res.ToString()); var str = res.ToString().Simplify(SimplifyOptions.Full); Console.WriteLine(str); Assert.AreEqual("<root><tcode='a'id='a'name='x'/></root>", str); }
protected BSharpContext CompileAll(bool single, params string[] code) { var parser = new BxlParser(); var idx = 0; var xmls = code.Select(_ => parser.Parse(_, (idx++) + ".bxl")).ToArray(); var cfg = new BSharpConfig { SingleSource = single, KeepLexInfo = false }; var result = BSharpCompiler.Compile(xmls, cfg); return((BSharpContext)result); }
public void CanUseMultiLineStringAsAttributeValue() { String bxl = @"test q=""""""qwerty asdf"""""" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("q")).Value, "qwerty\nasdf"); }
public void CanGetNestedAttribute() { String bxl = @"test1 x y = 5 "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("y")).Value, "5"); }
public void CanProcessExtraTabs() { String bxl = @" test1 test2" ; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Name.LocalName, "test1"); Assert.AreEqual(res.Elements().Last().Name.LocalName, "test2"); }
public void CanSkipMultipleSpaces() { String bxl = @" test1 x = 2 "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("x")).Value, "2"); }
public void CanUseExprecssionAsAnonAttribute() { String bxl = @"test1 a 'w w' (q q)"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement test1 = res.Elements().First(); Assert.AreEqual(test1.Attribute(XName.Get("name")).Value, "w w"); Assert.AreEqual(test1.Attribute(XName.Get("_aa4")).Value, "(q q)"); }
public void CanUseTextContentMultilineString() { String bxl = @"test1 : """"""qwerty' : 'ololo"""""" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Value, "qwerty'\n\t: 'ololo"); }
public void CanSkipCommentary() { String bxl = @"#qwerty ns1=qwerty #qwerty ns2::test a b ns3::x #qwerty test #qwerty"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); }
public void CanUseTextContentWithAttributes() { String bxl = @"test1 a b c=3:qwerty "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("name")).Value, "b"); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("c")).Value, "3"); Assert.AreEqual(res.Elements().First().Value, "qwerty"); }
public void CanDeclareNamespace() { String bxl = @"ns1=qwerty """"""ns 2""""""=""""""ololo"""""" test"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.GetNamespaceOfPrefix("ns1").NamespaceName, "qwerty"); Assert.AreEqual(res.GetNamespaceOfPrefix("ns\n2".Escape(EscapingType.XmlName)).NamespaceName, "ololo"); }
private void LoadBxlSources(IBSharpContext context) { var bxlparser = new BxlParser(); foreach (var file in DirectoryFileFilter.Create(Project).Collect()) { try { var xml = bxlparser.Parse(null, file); Project.Sources.Add(xml); Project.Log.Debug("add src from " + file); } catch (Exception ex) { context.RegisterError(BSharpErrors.Generic(ex)); Project.Log.Fatal("cannot load src from " + file + " : " + ex.Message); } } }
private void appendToFile(XElement e) { var generator = new Booxml.BooxmlGenerator(); var file = myapp.files.Resolve(filename,true); XElement x = null; if (null == file) { x = new XElement("root"); }else { var parser = new BxlParser(); x = parser.Parse(myapp.files.Read(filename)); } x.Add(e); myapp.files.Write(filename, generator.Generate(x)); }
public void CanDeclareDefaultNamespace() { String bxl = @"ns1=qwerty ns2::test a b ns3::x"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement test = res.Elements().First(); XAttribute att = test.Attributes().Last(); Assert.AreEqual(test.Name.NamespaceName, "namespace::code.bxl_X"); Assert.AreEqual(att.Name.NamespaceName, "namespace::code.bxl_XX"); }
public void CanUseAnonAttributeNamespace() { String bxl = @"ns1=qwerty test a b ns1::x"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement test = res.Elements().First(); XAttribute att = test.Attributes().Last(); Assert.AreEqual(att.Name.LocalName, "x"); Assert.AreEqual(att.Name.NamespaceName, "qwerty"); }
public void CanParse() { String bxl = @"tes+t1 f f a 5 -b xx = 4 xx=5 c d e test2 f e g r k h d,g, "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().Last().Attribute("_line").Value, "7"); }
public void CanProcessExtraTabs() { String bxl = @" test1 test2"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Name.LocalName, "test1"); Assert.AreEqual(res.Elements().Last().Name.LocalName, "test2"); }
public void CanCountAnonAttributes() { String bxl = @" test1 a b test2 c 'anon1' 'anon2'"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement t1 = res.Element("test1"); XElement t2 = t1.Element("test2"); Assert.AreEqual(t1.Attribute("_aa4").Value, "anon1"); Assert.AreEqual(t2.Attribute("name").Value, "anon2"); }
public void CannotUseNestedIfBrokenBrakesExpression() { String bxl = @"test1 qwerty=( nested (expression[x{2]}) ) "; IBxlParser p = new BxlParser(); Assert.Throws<BxlException>(() => p.Parse(bxl)); }
public void CannotUseExtraBeginExpressions() { String bxl = @"test1 qwerty=((( (nested (expression[x{2}]) ) "; IBxlParser p = new BxlParser(); Assert.Throws<BxlException>(() => p.Parse(bxl)); }
public void CanUseElementNamespace() { String bxl = @"ns1=qwerty ns2=qwerty2 ns1::test1 ns2::test2"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement test1 = res.Elements().First(); XElement test2 = test1.Elements().First(); Assert.AreEqual(test1.Name.LocalName, "test1"); Assert.AreEqual(test1.Name.NamespaceName, "qwerty"); Assert.AreEqual(test2.Name.LocalName, "test2"); Assert.AreEqual(test2.Name.NamespaceName, "qwerty2"); }
public void CanUseAttributeNamespace() { String bxl = @"ns1=qwerty ns2=qwerty2 test1 ns1::x=2 ns2::y=3"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl, "file", BxlParserOptions.NoLexData); Console.WriteLine(res); XElement test1 = res.Elements().First(); XAttribute att1 = test1.Attributes().First(); XAttribute att2 = test1.Attributes().Last(); Assert.AreEqual(att1.Name.LocalName, "x"); Assert.AreEqual(att1.Name.NamespaceName, "qwerty"); Assert.AreEqual(att2.Name.LocalName, "y"); Assert.AreEqual(att2.Name.NamespaceName, "qwerty2"); }
public void MultilineComentaryAtStart() { var bxl = @" /* my comment */ /* my comment */ /* my /* nest /* nest */ comment */*/ test a "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); var str = res.ToString().Simplify(SimplifyOptions.Full); Console.WriteLine(str); Assert.AreEqual("<rootfile='code.bxl'><testfile='code.bxl'line='12'code='a'id='a'/></root>",str); }
public void MultilineComentaryInsideOfElement(string code) { var bxl = code; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl, options:BxlParserOptions.NoLexData); Console.WriteLine(res.ToString()); var str = res.ToString().Simplify(SimplifyOptions.Full); Console.WriteLine(str); Assert.AreEqual("<root><tcode='a'id='a'name='x'/></root>", str); }
public void MultilineComentaryBetwenElements() { var bxl = @" t a /* c1 */ t b /* c2 */ t c "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res.ToString()); var str = res.ToString().Simplify(SimplifyOptions.Full); Console.WriteLine(str); Assert.AreEqual("<rootfile='code.bxl'><tfile='code.bxl'line='2'code='a'id='a'/><tfile='code.bxl'line='4'code='b'id='b'/><tfile='code.bxl'line='7'code='c'id='c'/></root>", str); }
public void MultilineComentary() { var bxl = @" /* my comment */ test a /* my comment */ test b /* my /* nest /* nest */ comment */*/ test c test d /* at the end of line */ test /* in line */ e test f : /* c c*/ xxx test f : xxx /* c c*/ "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res.ToString()); var str = res.ToString().Simplify(SimplifyOptions.Full); Console.WriteLine(str); Assert.AreEqual("<rootfile='code.bxl'><testfile='code.bxl'line='5'code='a'id='a'/><testfile='code.bxl'line='7'code='b'id='b'/><testfile='code.bxl'line='14'code='c'id='c'/><testfile='code.bxl'line='16'code='d'id='d'/><testfile='code.bxl'line='19'code='e'id='e'/><testfile='code.bxl'line='20'code='f'id='f'>xxx</test><testfile='code.bxl'line='23'code='f'id='f'>xxx</test></root>",str); }
public void CanUseMultiLineStringAsAttributeName() { String bxl = @"test1 a """"""q w e"""""" = """"""r t y"""""" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement test1 = res.Elements().First(); Assert.AreEqual(test1.Attribute(XName.Get("q\nw\ne".Escape(EscapingType.XmlName))).Value, "r\nt\ny"); }
public void CanUseTextContentWithChildElements() { String[] bxl = { @"test1 :qwerty test2", @"test1 test2 :qwerty" }; IBxlParser p = new BxlParser(); foreach (string code in bxl) { XElement res = p.Parse(code); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Name.LocalName, "test1"); Assert.AreEqual(res.Elements().First().Value, "qwerty"); Assert.AreEqual(res.Elements().First().Elements().First().Name.LocalName, "test2"); } }
private void LoadContainer() { if (Directory.Exists(Config.ConfigFolder)) { var xml = new XElement("result"); var bxl = new BxlParser(); foreach (var file in Directory.GetFiles(Config.ConfigFolder, "*.ioc-manifest.bxl")) { if (Config.IsConfigFileMatch(file)) { var filexml = bxl.Parse(File.ReadAllText(file)); xml.Add(filexml.Elements()); } } var loader = _container.GetLoader(); loader.LoadManifest(xml, true); foreach (var assemblyName in Config.AutoconfigureAssemblies){ var assembly = Assembly.Load(assemblyName); loader.LoadAssembly(assembly); } } }
public void CanUseNestedDifferentBrakesExpression() { String bxl = @"test1 qwerty=( nested (expression[x{2}]) ) "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement test1 = res.Elements().First(); Assert.AreEqual(test1.Attribute(XName.Get("qwerty")).Value, "(\nnested (expression[x{2}])\n)"); }