private void Initialize() { this.head = null; this.next = null; this.root = null; this.state = 0; }
// HTS_Question_load: Load questions from file public bool Load(HTS_File fp) { if (fp == null) { return(false); } string tToken; HTS_Pattern pattern, last_pattern; Initialize(); // get question name m_Word = fp.GetPatternToken(); if (string.IsNullOrEmpty(m_Word) == true) { return(false); } // get pattern list tToken = fp.GetPatternToken(); if (string.IsNullOrEmpty(tToken) == true) { Initialize(); return(false); } last_pattern = null; if (tToken == "{") { while (true) { tToken = fp.GetPatternToken(); if (string.IsNullOrEmpty(tToken) == true) { Initialize(); return(false); } pattern = new HTS_Pattern(); if (m_Head != null) { last_pattern.next = pattern; } else { // first time m_Head = pattern; } pattern.word = tToken; pattern.next = null; tToken = fp.GetPatternToken(); if (string.IsNullOrEmpty(tToken) == true) { Initialize(); return(false); } if (tToken == "}") { break; } last_pattern = pattern; } } return(true); }
private void Initialize() { m_Word = null; m_Head = null; next = null; }
// HTS_Tree_parse_pattern: parse pattern specified for each tree public void ParsePattern(string tString) { // {xxx,yyy,zzz} または {(xxx,yyy,zzz)} というパターンから値を切り出す HTS_Pattern pattern, last_pattern; this.head = null; last_pattern = null; int i, l = tString.Length; int p, q; for (i = 0; i < l; i++) { if (tString[i] == '{') { break; } } if (i >= l) { return; } i++; if (i >= l) { return; } if (tString[i] == '(') { i++; } if (i >= l) { return; } p = i; for (i = p; i < l; i++) { if (tString[i] == '}') { break; } } if (i >= l) { return; } i--; if (tString[i] == ')') { i--; } q = i; //---------------------------------- l = q - p + 1; string s = tString.Substring(p, l); s = s + ","; l++; p = 0; // parse pattern while (p < l) { pattern = new HTS_Pattern(); if (this.head != null) { last_pattern.next = pattern; } else { this.head = pattern; } for (i = p; i < l; i++) { if (s[i] == ',') { break; } } pattern.word = s.Substring(p, i - p); p = i + 1; pattern.next = null; last_pattern = pattern; } }