private bool number() { /// number = digits+ ('.' digits+)? string digits = null; int line = _line; int position = _position; while (Numbers.Contains(peek() ?? NotNumber)) { digits = (digits ?? "") + peek(); if (advance(1)) { break; } } // floating point part if (accept(".")) { digits += "."; while (Numbers.Contains(peek() ?? NotNumber)) { digits = (digits ?? "") + peek(); if (advance(1)) { break; } } } if (digits != null) { Node node; if (digits.Contains(".")) { node = new FloatNode(digits, _filename, line, position); } else { node = new IntegerNode(digits, _filename, line, position); } _stack.Push(node); return(true); } return(false); }
public void integer_immediate(IntegerNode node) { Instruction instruction = new Instruction(InstructionOpcode.push, node.Number); instructions.Add(instruction); }