Beispiel #1
0
        /// <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());
        }
Beispiel #3
0
        /// <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));
            }
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
        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);
                        }
                    }
                }
            }
        }
Beispiel #7
0
        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()));
            }
        }
Beispiel #8
0
    /// <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;
    }
Beispiel #9
0
 public static void Init()
 {
     Grammmer = new Grammer(Properties.Resources.Grammer);
 }
        private void Grammer_Click(object sender, RoutedEventArgs e)
        {
            Grammer page = new Grammer();

            page.Activate();
        }