using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using agree.itsdb; using miew.String; using miew.Enumerable; using miew.Tokenization; using Type = System.Type; using Expression = System.Linq.Expressions.Expression; namespace agree.Wpf { public class MyUserControl : UserControl { public static readonly DependencyProperty ItsdbDatabaseProperty; public static readonly DependencyProperty ItsdbSelectedTableProperty; static MyUserControl() { { FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata( null, FrameworkPropertyMetadataOptions.None, (dobj, e) => { }); ItsdbDatabaseProperty = DependencyProperty.Register("ItsdbDatabase", typeof(ItsdbDatabase), typeof(ItsdbWindow), metadata); } { FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata( null, FrameworkPropertyMetadataOptions.None, (dobj, e) => { Debug.WriteLine("updating selected table dp"); }); ItsdbSelectedTableProperty = DependencyProperty.Register("ItsdbSelectedTable", typeof(IitsdbTable), typeof(ItsdbWindow), metadata); } } }; /// <summary> /// Interaction logic for ItsdbWindow.xaml /// </summary> public partial class ItsdbWindow : MyUserControl { public ItsdbWindow() { InitializeComponent(); } }; public class ItsdbDocument : AgreeDocument { public ItsdbDocument(agree.ISysObj so) { ItsdbDatabase db = new ItsdbDatabase(so, //"/home/glenn/erg/tsdb/gold/hike" "/programming/analytical-grammar/grammars/erg/tsdb/gold/hike" ); #if false IitsdbTable jt = db.TableFromAnonymousItems("table1", "table1", db.ParseTable.Join(db.ItemTable, p => p.i_id, i => i.i_id, (p, i) => { return new { p.i_id, i.i_input, p.treal, p.readings, p.unifications, }; })); using (StreamWriter sw2 = new StreamWriter(@"\programming\analytical-grammar\lkb-dump2.txt")) { foreach (dynamic item in jt) { sw2.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", item.i_id, item.i_input.Trim(), item.treal, item.readings, item.unifications ); } } #endif #if false agree.Grammar grm = so as agree.Grammar; if (grm != null) { using (StreamWriter sw2 = new StreamWriter(@"d:\programming\analytical-grammar\erg-test-items2.txt")) { //var erg_tok = new erg_funcs.ErgTokenizer(s => // { // /// crude lookup verification, but prevent the lexical entry 'The Maltese Falcon' from // /// accepting sentence-initial 'The' when we actually want the tokenizer to lowercase it. // return grm.lex[s].Any(q => q.Lemmata.Count == 1); // }); foreach (dynamic item in jt) { String s_item = item.i_input.Trim(); TokenizedString ts = new TokenizedString(s_item, grm.Parser.Tokenizer); try { var ax = grm.lex.AnalyzeHypothesis(ts, grm.loadtray); var bx = ax.Analyses.UnionMany(tok => tok.ChartSpan.Range); var x = Enumerable.Range(0, ax.ChartSize).Except(bx).ToArray(); if (x.Length > 0) sw2.WriteLine("{0}", x.Select(ix => ts.MinimalSpanText(new glue.Tokenization.Span(ix, ix))).StringJoin(" ")); else sw2.WriteLine("{0}", s_item); } catch (agree.CyclicUnificationException) { sw2.WriteLine("*** stack overflow ***"); } } } } #endif this.Title = "[incr tsdb()] database"; ItsdbWindow w = new ItsdbWindow(); w.SetValue(ItsdbWindow.ItsdbDatabaseProperty, db); w.SetValue(ItsdbWindow.ItsdbSelectedTableProperty, db.Tables[0]); //w.DataContext = db; this.Content = w; } }; }