/// <summary> /// Define a new primitive language operator for this language /// </summary> /// <param name="opName">The operator name</param> /// <param name="opSymbolString">The operator symbol</param> /// <returns></returns> public OperatorPrimitive DefineLanguageOperatorPrimitive(string opName, string opSymbolString) { if (OperatorPrimitiveDictionary.ContainsKey(opName)) { return(OperatorPrimitiveDictionary[opName]); } var newOp = OperatorPrimitive.Create(opName, opSymbolString); OperatorPrimitiveDictionary.Add(opName, newOp); return(newOp); }
internal static OperatorToken ReadOperator(TokenCollection stream) { if (stream.NextIsEndOfLine) { throw new HspLogicalLineException("演算子:読み込み中にスタックが空になった"); } //変数プリティブ読み込み OperatorPrimitive token = stream.GetNextToken() as OperatorPrimitive; if (token == null) { throw new HspLogicalLineException("演算子:不適切な要素を検出"); } return(new OperatorToken(token)); }
/// <summary> /// Define a new primitive language operator for this language /// </summary> /// <param name="opName">The operator name</param> /// <returns></returns> public OperatorPrimitive DefineLanguageOperatorPrimitive(string opName) { if (OperatorPrimitiveDictionary.ContainsKey(opName)) { return(OperatorPrimitiveDictionary[opName]); } var newOp = OperatorPrimitive.Create(opName); OperatorPrimitiveDictionary.Add(opName, newOp); //if (EnableLogger) // _Logger.AddFullLine("Defining language role " + new_op.OperatorName); return(newOp); }
public static BasicBinary CreatePrimitive(ILanguageType exprType, OperatorPrimitive langOp, ILanguageExpressionAtomic operand1, ILanguageExpressionAtomic operand2) { return(new BasicBinary(exprType, langOp, operand1, operand2)); }
internal OperatorToken(OperatorPrimitive source) { primitive = source; }