/// <summary> /// "Base Layer.Alpaca" や、"Base Layer.Alpaca.Bear" などがOK。 /// /// ステートマシン名は無いこともある。 /// </summary> /// <param name="query"></param> /// <param name="ref_caret"></param> /// <param name="maxFt"></param> /// <returns></returns> public static bool Fixed_LayerName_And_StatemachineNames_And_StateName(string query, ref int ref_caret, ref FullpathTokens maxFt) { FullpathTokens ft = new FullpathTokens("LayerName_And_StatemachineNames_And_StateName"); int caret = ref_caret; string layerNameEndsWithoutDot; List <string> statemachineNamesEndsWithoutDot; string stateName; if (!FullpathLexcalP.VarLayerName(query, ref caret, out layerNameEndsWithoutDot)) { return(NotMatched(maxFt, caret, ref maxFt)); } ft.LayerNameEndsWithoutDot = layerNameEndsWithoutDot; // ステートマシン名はオプション。 if (FullpathLexcalP.VarStatemachineNames(query, ref caret, out statemachineNamesEndsWithoutDot)) { ft.StatemachineNamesEndsWithoutDot = statemachineNamesEndsWithoutDot; } if (!FullpathLexcalP.VarStateName(query, ref caret, out stateName)) { return(NotMatched(maxFt, caret, ref maxFt)); } ft.StateName = stateName; maxFt = ft; ref_caret = caret; return(true); }
public void N80_Lexical_VarLayerName() { string query = "Base Layer.Alpaca.Bear.Cat"; int caret = 0; string layerNameEndsWithoutDot; bool successful = FullpathLexcalP.VarLayerName(query, ref caret, out layerNameEndsWithoutDot); Assert.IsTrue(successful); Assert.AreEqual(11, caret); Assert.AreEqual("Base Layer", layerNameEndsWithoutDot); }
public void N80_Lexical_VarStateName() { string query = "Base Layer.Alpaca.Bear.Cat"; // "Base Layer.Alpaca.Bear." まで走査した続きから。 int caret = "Base Layer.Alpaca.Bear.".Length; string stateName; bool successful = FullpathLexcalP.VarStateName(query, ref caret, out stateName); Assert.IsTrue(successful); // "Cat" の次。 Assert.AreEqual(26, caret); Assert.AreEqual("Cat", stateName); }
/// <summary> /// ドット(.) または文末までがレイヤー名。 /// /// (FIXME: 実際はレイヤー名にはドットを含むことができるが、運用で避けるものとする) /// </summary> /// <param name="query"></param> /// <param name="caret"></param> /// <returns></returns> public static bool Fixed_LayerName(string query, ref int ref_caret, ref FullpathTokens maxFt) { FullpathTokens ft = new FullpathTokens("LayerName"); int caret = ref_caret; string layerNameEndsWithoutDot; if (!FullpathLexcalP.VarLayerName(query, ref caret, out layerNameEndsWithoutDot)) { return(NotMatched(maxFt, caret, ref maxFt)); } ft.LayerNameEndsWithoutDot = layerNameEndsWithoutDot; maxFt = ft; ref_caret = caret; return(true); }
/// <summary> /// "Base Layer.Alpaca" や、"Base Layer.Alpaca.Bear" などがOK。 /// /// ステートマシン名は無いこともある。 /// </summary> /// <param name="query"></param> /// <param name="ref_caret"></param> /// <param name="maxFt"></param> /// <returns></returns> public static bool Continued_Fixed_StateName(string query, ref int ref_caret, FullpathTokens baseFt, ref FullpathTokens maxFt) { // クローンし、追加していく。 FullpathTokens ft = new FullpathTokens(baseFt); int caret = ref_caret; string stateName; if (!FullpathLexcalP.VarStateName(query, ref caret, out stateName)) { return(NotMatched(maxFt, caret, ref maxFt)); } ft.StateName = stateName; maxFt = ft; ref_caret = caret; return(true); }
public void N80_Lexical_VarStatemachineNames() { string query = "Base Layer.Alpaca.Bear.Cat"; // "Base Layer." まで走査した続きから。 int caret = "Base Layer.".Length; List <string> statemachinesNameEndsWithoutDot; bool successful = FullpathLexcalP.VarStatemachineNames(query, ref caret, out statemachinesNameEndsWithoutDot); Assert.IsTrue(successful); // "~Bear." の次。 Assert.AreEqual(23, caret); Assert.AreEqual(2, statemachinesNameEndsWithoutDot.Count); Assert.AreEqual("Alpaca", statemachinesNameEndsWithoutDot[0]); Assert.AreEqual("Bear", statemachinesNameEndsWithoutDot[1]); }