/// <summary> /// Refreshes the list /// </summary> public void Refresh() { try { var sql = string.Format("select * from moduleGrammerWords"); if (Framework.Database.IsConnected() == false) { return; } var ds = Framework.Database.ExecuteQuery(sql); var clientTable = ds.Tables[0]; if (clientTable.Rows.Count == 0) { return; } foreach (DataRow row in clientTable.Rows) { var id = ( int )row["id"]; var mid = ( int )row["m_id"]; var gkey = ( string )row["grammerkey"]; var gvalue = ( string )row["grammerval"]; var newDbEntry = true; for (var y = 0; y < _grammer.Count; y++) { if (_grammer[y].GetId() != id) { continue; } newDbEntry = false; break; } if (!newDbEntry) { continue; } var grammer = new Grammer(id, mid, gkey, gvalue); _grammer.Add(grammer); } } catch (Exception error) { Framework.EventBus.Publish(error); } }
static void Main(string[] args) { Grammer g = new Grammer("code := {vardec}\nvardec := var(\\s)+{name}(\\s)+=(\\s)+{value}\nname := [A-Za-z]+\nvalue := [0-9]+"); var x = g.Parse("code", "var i = 10;"); X86Compiler cp = new X86Compiler(); List<Asty> CodeBlock = new List<Asty>(); CodeBlock.Add(new VarDec() { Type = DataType.int32 }); cp.Compile(new Method() { Name = "main", CodeBlock = CodeBlock }); File.WriteAllText("test.asm", cp.GetString()); }
/// <summary> /// Adds a grammer given a moduleid or returns existing Grammer /// </summary> /// <param name = "moduleId">int</param> /// <param name = "key">string</param> /// <param name = "val">string</param> /// <returns>IGrammer</returns> public IGrammer CreateGrammer(int moduleId, string key, string val) { try { if (_grammer == null) { BuildGrammerListing(); } for (var y = 0; y < _grammer.Count; y++) { if (_grammer[y].GetModuleId() == moduleId && _grammer[y].GetKey().CompareTo(key) == 0) { return(_grammer[y]); } } var sql = string.Format("insert into moduleGrammerWords values( null , '{0}' , '{1}' ,'{2}' )", moduleId, key, val); if (Framework.Database.IsConnected() == false) { return(null); } Framework.Database.ExecuteNonQuery(sql); var sql2 = string.Format("select * from moduleGrammerWords where id = ( select MAX( id ) from moduleGrammerWords)"); var ds = Framework.Database.ExecuteQuery(sql2); var grammerTable = ds.Tables[0]; var row = grammerTable.Rows[0]; var id = ( int )row["id"]; var grammer = new Grammer(id, moduleId, key, val); _grammer.Add(grammer); return(_grammer[_grammer.Count - 1]); } catch (Exception error) { Framework.EventBus.Publish(error); return(null); } }
private void BtnParse_Click(object sender, RoutedEventArgs e) { var alphabet = txtAlphabet.Text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Where(c => c.Length == 1).Select(c => c[0]).ToArray(); var grammerText = txtGrammer.Text.Trim(); if (alphabet.Length == 0 || grammerText.Length == 0) { MessageBox.Show("Alphabet and Grammer Text can't be empty.", "Invalid Input", MessageBoxButton.OK, MessageBoxImage.Error); return; } lstRules.Items.Clear(); txtAlphabet.Text = string.Join(" ", alphabet); var grammer = Grammer.Create(alphabet, grammerText, chkEleminateExtra.IsChecked ?? false); foreach (var rule in grammer.Rules) { lstRules.Items.Add(new RulesListItemModel(rule)); } }
private static void BuildGrammerListing() { _grammer = new List <IGrammer>(); try { var sql = string.Format("select * from moduleGrammerWords"); if (Framework.Database.IsConnected() == false) { return; } var ds = Framework.Database.ExecuteQuery(sql); var clientTable = ds.Tables[0]; if (clientTable.Rows.Count == 0) { return; } foreach (DataRow row in clientTable.Rows) { var id = ( int )row["id"]; var mid = ( int )row["m_id"]; var gkey = ( string )row["grammerkey"]; var gvalue = ( string )row["grammerval"]; var grammer = new Grammer(id, mid, gkey, gvalue); _grammer.Add(grammer); } } catch (Exception error) { Framework.EventBus.Publish(error); } }
private static void Create_I0(string s, Graf g, int contor = 0, bool reset_parcurs = false) { if (reset_parcurs == false) { for (int i = 0; i < parcurs.Count; i++) { parcurs[i] = false; } } if (contor == 0) { //s='S'>.S,$' //List<string> generated = new List<string>(); List <string> firstAfterDotProductions = new List <string>(); var firstAfterDot = s.Split('.')[1][0].ToString(); //S var afterDot = s.Split('.')[1].ToString(); var afterComma = s.Split(',')[1].ToString(); var items = Dictionary_Grammer.Where(elem => elem.Value[0].ToString().Equals(firstAfterDot)); foreach (var item in items) { var left = item.Value[0].ToString(); var right = item.Value.Split('>')[1]; //generated.Add(left + ">." + right + ","); if (firstAfterDot.Equals(right[0].ToString())) { firstAfterDotProductions.Add(right.Substring(1)); } } //string lookahead = first(afterDot.Substring(1).Replace(",","")); string lookahead = String.Empty; if (!afterDot[1].ToString().Equals(",")) { lookahead = first(afterDot.Substring(1).Split(',')[0]); if (lookahead.Equals("")) { lookahead = afterComma; } } else { lookahead = afterComma; } foreach (var i in firstAfterDotProductions) { lookahead += '/' + first(i); } var result2 = lookahead.Replace("/", "").Distinct(); string result3 = string.Empty; foreach (var i in result2) { result3 += "/" + i.ToString(); } lookahead = result3.Substring(1); foreach (var item in items) { var left = item.Value[0].ToString(); var right = item.Value.Split('>')[1]; g.Lista_noduri.Add(left + ">." + right + ',' + lookahead); if (left.Equals(right[0].ToString())) { var el = left + ">" + right; var poz = Grammer.IndexOf(Grammer.Where(elem => elem.Equals(el)).FirstOrDefault()); if (parcurs[poz] == false) { parcurs[poz] = true; Create_I0(left + ">." + right + ',' + lookahead, g, 1, true); } } else { var el = left + ">" + right; var poz = Grammer.IndexOf(Grammer.Where(elem => elem.Equals(el)).FirstOrDefault()); if (parcurs[poz] == false) { parcurs[poz] = true; Create_I0(left + ">." + right + ',' + lookahead, g, 0, true); } } } } }
public IsSuccessResult <int> Edit(EditBlog data, int userId, int?blogId) { var log = GetLogger(); log.Debug("Title: {0}, Detail: {1}, Tag: {2}, UserId: {3}, BlogId: {4}, Catalog: {5}" , data.Title, data.Detail, data.Tag, userId, blogId, data.Catalog); var user = NiHonGoContext.Users .SingleOrDefault(r => r.Id == userId); if (user == null) { return(new IsSuccessResult <int>(ErrorCode.UserNotFound.ToString())); } if ((UserType)user.Type != UserType.Admin) { return(new IsSuccessResult <int>(ErrorCode.NoAuthentication.ToString())); } if (string.IsNullOrWhiteSpace(data.Title)) { return(new IsSuccessResult <int>(ErrorCode.BlogTitleIsNull.ToString())); } if (string.IsNullOrWhiteSpace(data.Detail)) { return(new IsSuccessResult <int>(ErrorCode.BlogDetailIsNull.ToString())); } if (string.IsNullOrWhiteSpace(data.Catalog)) { return(new IsSuccessResult <int>(ErrorCode.CatalogIsNull.ToString())); } var blog = NiHonGoContext.Blogs .SingleOrDefault(r => r.Id == blogId); var catalog = NiHonGoContext.Catalogs .SingleOrDefault(r => r.Display == data.Catalog); try { if (catalog == null) { catalog = new Grammer { Display = data.Catalog }; NiHonGoContext.Catalogs.Add(catalog); NiHonGoContext.SaveChanges(); } if (blog == null) { var currentDate = DateTime.UtcNow; blog = new Blog { Title = data.Title, Detail = data.Detail, UserId = userId, Tag = data.Tag, Catalog = catalog, CreateDate = currentDate, }; NiHonGoContext.Blogs.Add(blog); NiHonGoContext.SaveChanges(); if (!string.IsNullOrWhiteSpace(data.Photo)) { var oldPhotoName = data.Photo.Split('\\').Last(); var newPhotoName = blog.Id + Path.GetExtension(oldPhotoName); File.Move(data.Photo, data.Photo.Replace(oldPhotoName, newPhotoName)); blog.Photo = newPhotoName; NiHonGoContext.SaveChanges(); } } else { blog.Title = data.Title; blog.Detail = data.Detail; blog.Tag = data.Tag; blog.UserId = userId; blog.Catalog = catalog; NiHonGoContext.SaveChanges(); } return(new IsSuccessResult <int> { ReturnObject = blog.Id }); } catch (Exception ex) { log.Error(ex); return(new IsSuccessResult <int>(ErrorCode.InternalError.ToString())); } }
/// <summary> /// Obtenir le grammaire qui defini le language defini par l'automate courant /// </summary> /// <returns>Un grammer equivalant</returns> public Grammer toGrammer() { Gfa auto = this.toGfa(); ArrayList v = new ArrayList(); for (char i = 'A'; i < auto.S + 'A'; i++) v.Add(i); if (v.Count == 0) v.Add('A'); Grammer result = new Grammer(auto.X, v, (char)v[auto.S0]); for (int i = 0; i < this.S; i++) for (int k = 0; k < auto.Read.Count; k++) { string word = auto.Read[k].ToString(); foreach (int j in auto.getInstruction(i, word)) { result.AddProduction(new Grammer.ProductionRule((char)result.V[i], word, (char)result.V[j])); if (auto.F.Contains(j)) result.AddProduction(new Grammer.ProductionRule((char)result.V[i], word, Grammer.NOVARIABLE)); } } return result; }
public static void Init() { Grammmer = new Grammer(Properties.Resources.Grammer); }
private void Grammer_Click(object sender, RoutedEventArgs e) { Grammer page = new Grammer(); page.Activate(); }