• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

Moudey

الخبراء المعتمدون
  • عدد المشاركات

    385
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

6 عادي

عن Moudey

  • الرتبة
    خبير #C

طرق الإتصال

  • MSN [email protected]
  • Website URL http://www.graysoft.net
  • ICQ 0
  • Yahoo moudeygo
  • Skype moudeygo
  • Facebook moudeygo
  • Twitter moudey

معلومات الملف الشخصي

  • الجنس ذكر
  • الدولة : مصر

أحدث الزائرين لملفلك الشخصي

4,409 زياره للملف الشخصي
  1. implement threading with progressbar

    public delegate void OnIncProgress(int val); public void DoTh() { IncProgress(0); } void IncProgress(int val) { if(this.InvokeRequired) { this.Invoke(new OnIncProgress(IncProgress), new object[] { val }); return; } int step; Random rnd = new Random(); while (true) { step = this.progressBarX.Step * rnd.Next(-1, 200); val = this.progressBarX.Value + step; if (val > this.progressBarX.Maximum) val = this.progressBarX.Maximum; else if (val < this.progressBarX.Minimum) val = this.progressBarX.Minimum; this.progressBarX.Value = val; Thread.Sleep(50); } } private void Form1_Load(object sender, EventArgs e) { Thread th = new Thread(new ThreadStart(DoTh)); th.IsBackground = true; th.Start(); }
  2. اعتقد بناء lexical analyzer يجب ان لا يعتمد على regex ففى المرفقات مثال يوضح كيفية بناء lexical analyzer او Scanner لمادة Compiler فالمثال بسيط وواضح ان شاء الله Scanner.zip
  3. هل احتاج الى IIS للعمل على asp.net?

    http://www.moudey.net/?p=178
  4. internal enum Token { Keyword, sign, delim, relop, Number, Identifier, lexical_error } internal static class LambdaCalcScanner { const string Pattern = @" (?'Keyword' (if|then|false|true|for|foreach|while)) | (?'sign' (\+|-|\*|\^)) | (?'delim' [\r\n\t]) | (?'relop' [\<\>=])| (?'Number' (\.\d+|\d+(\.\d+)?(E\d+)?) ) | (?'Identifier' [a-zA-Z]\w* ) | (?'lexical_error' [\.\)\(:;@#,!£$%&])"; private static Regex MathRegex = new Regex( Pattern, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline | RegexOptions.Compiled); public static IEnumerable<TokenEntity> GetLambdaCalcTokens(this string exp) { Token[] tokens = Enum.GetValues(typeof(Token)).OfType<Token>().ToArray(); foreach(Match m in MathRegex.Matches(exp)) { foreach(Token token in tokens) { if(m.Groups[token.ToString()].Success) { yield return new TokenEntity( token, m.Index, m.Value); } } } yield return new TokenEntity(Token.lexical_error, exp.Length, "\0"); } } internal class TokenEntity { public TokenEntity(Token token, int startPos, string value) { this.Token = token; this.StartPos = startPos; this.Value = value; } public Token Token { get; private set; } public int StartPos { get; private set; } public string Value { get; private set; } public override string ToString() { return string.Format(Value.PadRight(20)+"\t" + Token); } }
  5. ممكن ارفاق الكود؟
  6. (?'Keyword' [^\w](if|then|false|true|for|foreach|while)[^\w]) | تعديل بسيط لاستخراج الكلمات المفتاحية فقط [^\w] تعنى كل المحارف ماعدا المحارف من a to z
  7. internal enum Token { OpenParan, CloseParan, Comma, Plus, Minus, Multiply, Divide, Number, Keyword, Identifier, Constant, Other } const string Pattern = @" (?'OpenParan' \( ) | (?'CloseParan' \) ) | (?'Identifier' [a-zA-Z]\w* ) | (?'Keyword' \s(if|then|false|true|for|foreach|while)\s) | (?'Comma' , ) | (?'Plus' \+ ) | (?'Minus' - ) | (?'Multiply' \* ) | (?'Divide' / ) | (?'Number' (\.\d+|\d+(\.\d+)?(E\d+)?) ) | (?'Other' [^ \r\n\t])";
  8. (?'Keyword' \s(if|then|false|true|for|foreach|while)\s) | ثم اضافة Keyword الى enum Token
  9. static void ChangeInputLangToArabic() { InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture( new System.Globalization.CultureInfo("ar-EG") ); }
  10. (?'Number' (\.\d+|\d+(\.\d+)?(E\d+)?) ) |
  11. مثال اخر بتقنية LL parser http://en.wikipedia.org/wiki/LL_parser using System; using System.Collections; using System.Collections.Generic; using System.IO; namespace LLParser { using TokenStream = System.Collections.Generic.IEnumerator<Token>; public enum Kind { EOF, PLUS, MINUS, MULT, DIV, MOD, LPAR, RPAR, NUM, IDENT, COMA, ERROR} public struct Token { public readonly Kind kind; public readonly string nval; public Token(Kind k, string v) { this.kind = k; this.nval = v; } public override string ToString() { return string.Format("{0}\t{1}", kind.ToString(), this.nval); } static public Token FromKind(Kind k) { return new Token(k, null); } static public Token FromKind(Kind k, string v) { return new Token(k, v); } } public interface IScanner { TokenStream Scan(TextReader reader); } class Scanner : IScanner { public TokenStream Scan(TextReader reader) { IList<Token> tokenList = new List<Token>(); while(reader.Peek() != -1) { if(Char.IsWhiteSpace((char)reader.Peek())) { reader.Read(); } else if(Char.IsDigit((char)reader.Peek())) { string val = null; val += (char)reader.Read(); while(Char.IsDigit((char)reader.Peek())) { val += (char)reader.Read(); } if(reader.Peek() == '.') { val += (char)reader.Read(); while(Char.IsDigit((char)reader.Peek())) { val += (char)reader.Read(); } } tokenList.Add(new Token(Kind.NUM, val)); } else if(Char.IsLetter((char)reader.Peek())) { string val = null; val += (char)reader.Read(); while( Char.IsDigit((char)reader.Peek()) || Char.IsLetter((char)reader.Peek())) { val += (char)reader.Read(); } tokenList.Add(new Token(Kind.IDENT, val)); } else { char c = (char)reader.Read(); switch(c) { case '+': tokenList.Add(Token.FromKind(Kind.PLUS, "+")); break; case '-': tokenList.Add(Token.FromKind(Kind.MINUS, "-")); break; case '*': tokenList.Add(Token.FromKind(Kind.MULT, "*")); break; case '/': tokenList.Add(Token.FromKind(Kind.DIV, "/")); break; case '%': tokenList.Add(Token.FromKind(Kind.MOD, "%")); break; case ',': tokenList.Add(Token.FromKind(Kind.COMA, ",")); break; case '(': tokenList.Add(Token.FromKind(Kind.LPAR, "(")); break; case ')': tokenList.Add(Token.FromKind(Kind.RPAR, ")")); break; default: tokenList.Add(Token.FromKind(Kind.ERROR, c.ToString()));break; } } } tokenList.Add(Token.FromKind(Kind.EOF)); return tokenList.GetEnumerator(); } } class Test { public static void Main(string[] args) { try { TextReader r = new StringReader("135.43!as12^234E34-sdme,,, then ... if"); IScanner scanner = new Scanner(); TokenStream t = scanner.Scan(r); Console.WriteLine("Token" + "\t" + "LEXEME"); Console.WriteLine("=======" + "\t" + "========="); while(t.MoveNext()) { Console.WriteLine(t.Current.ToString()); } } catch(Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } }
  12. Writing a simple lexicon scanner in .NET http://blogs.msdn.com/haniatassi/archive/2008/10/23/Writing-a-simple-scanner-in-.NET.aspx
  13. كيف يمكننى عمل dll file من c file

    //cl /LD mydll.c /link kernel32.lib user32.lib #include <windows.h> __declspec(dllexport)void DoMyJob(LPCTSTR szMsg) { MessageBox(0, szMsg, "DoMyJob", 0); } BOOL WINAPI DllMain( HINSTANCE hinstDLL, // handle to DLL module DWORD fdwReason, // reason for calling function LPVOID lpReserved ) // reserved { // Perform actions based on the reason for calling. switch( fdwReason ) { case DLL_PROCESS_ATTACH: // Initialize once for each new process. // Return FALSE to fail DLL load. break; case DLL_THREAD_ATTACH: // Do thread-specific initialization. break; case DLL_THREAD_DETACH: // Do thread-specific cleanup. break; case DLL_PROCESS_DETACH: // Perform any necessary cleanup. break; } return TRUE; // Successful DLL_PROCESS_ATTACH. } //cl test.c kernel32.lib #include <windows.h> void (WINAPI *DoMyJob)(LPCTSTR szMsg); int main(int argc, char* argsv[]) { HMODULE hMydll = NULL; hMydll = LoadLibrary("mydll.dll"); if (hMydll != NULL) { (FARPROC)DoMyJob = GetProcAddress(hMydll, "DoMyJob"); if(DoMyJob) { DoMyJob("helow!!!!!!!!"); } FreeLibrary(hMydll); } return 0; } mydll.zip
  14. http://vb4arab.com/vb/showthread.php?t=44661
  15. مثال بسيط لعرض وتحميل الملفات uploads_files.zip