Ejemplo n.º 1
0
        /// <summary>
        /// オペランドを解釈します。記述の形式は "語数" です。
        /// </summary>
        /// <param name="lexer">オペランドの字句を解析する <see cref="OperandLexer"/> のオブジェクトです。</param>
        /// <returns>
        /// 解釈した結果として生成した <see cref="WordCount"/> のオブジェクトを返します。
        /// </returns>
        internal static WordCount Parse(OperandLexer lexer)
        {
            // 語数は, 10 進定数 (≧ 0) で指定する。
            Token token = lexer.ReadCurrentAs(TokenType.DecimalConstant);

            return(new WordCount(token.I32Value));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// r のオペランドを解釈します。
        /// </summary>
        /// <param name="lexer">オペランドの字句を解析する <see cref="OperandLexer"/> のオブジェクトです。</param>
        /// <param name="opcode">このオペラントの命令の第 1 語のオペコードの値です。</param>
        /// <returns>
        /// 解釈した結果として生成した <see cref="RegisterOperand"/> オブジェクトを返します。
        /// </returns>
        internal static RegisterOperand Parse(OperandLexer lexer, UInt16 opcode)
        {
            Token token = lexer.ReadCurrentAs(TokenType.RegisterName);

            return(new RegisterOperand(opcode, token.StrValue));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// オペランドのラベルを解釈します。
        /// </summary>
        /// <param name="lexer">オペランドの字句を解析する <see cref="OperandLexer"/> のオブジェクトです。</param>
        /// <returns>
        /// 解釈した結果として生成した <see cref="Label"/> オブジェクトを返します。
        /// </returns>
        internal static Label Parse(OperandLexer lexer)
        {
            Token token = lexer.ReadCurrentAs(TokenType.Label);

            return(new Label(token.StrValue));
        }