package st.gravel.support.compiler.ast; /* This file is automatically generated from typed smalltalk source. Do not edit by hand. (C) AG5.com */ import java.math.BigInteger; import st.gravel.support.jvm.NonLocalReturn; import st.gravel.support.compiler.ast.LimitedPrecisionRealLiteralNode; import st.gravel.support.compiler.ast.LimitedPrecisionRealLiteralNode.LimitedPrecisionRealLiteralNode_Factory; import st.gravel.support.compiler.ast.NodeVisitor; import st.gravel.support.compiler.ast.Node; import st.gravel.support.compiler.ast.SourcePrinter; import st.gravel.support.compiler.ast.SourcePosition; public class DoubleLiteralNode extends LimitedPrecisionRealLiteralNode implements Cloneable { public static DoubleLiteralNode_Factory factory = new DoubleLiteralNode_Factory(); public static class DoubleLiteralNode_Factory extends LimitedPrecisionRealLiteralNode_Factory { public DoubleLiteralNode basicNew() { DoubleLiteralNode newInstance = new DoubleLiteralNode(); newInstance.initialize(); return newInstance; } public Character exponentCharacter() { return 'd'; } public boolean exponentCharacterIsMandatory() { return true; } @Override public DoubleLiteralNode integer_fractionString_exponent_(final java.math.BigInteger _anInteger, final String _fractionString, final java.math.BigInteger _exp) { final StringBuilder _wstr; _wstr = st.gravel.support.jvm.WriteStreamFactory.on_(new String()); _wstr.append(_anInteger.toString()); if (_fractionString != null) { _wstr.append('.'); _wstr.append(_fractionString); } if (!((_exp == null) && (!this.exponentCharacterIsMandatory()))) { _wstr.append(DoubleLiteralNode_Factory.this.exponentCharacter()); if (!((_exp == null) || st.gravel.support.jvm.LargeIntegerExtensions.isZero(_exp))) { _wstr.append(_exp.toString()); } } return ((DoubleLiteralNode) this.valueString_(_wstr.toString())); } @Override public DoubleLiteralNode valueString_(final String _aString) { return ((DoubleLiteralNode) this.basicNew().initializeValueString_(_aString)); } } static public Character _exponentCharacter(Object receiver) { return factory.exponentCharacter(); } static public boolean _exponentCharacterIsMandatory(Object receiver) { return factory.exponentCharacterIsMandatory(); } static public DoubleLiteralNode _integer_fractionString_exponent_(Object receiver, final java.math.BigInteger _anInteger, final String _fractionString, final java.math.BigInteger _exp) { return factory.integer_fractionString_exponent_(_anInteger, _fractionString, _exp); } static public DoubleLiteralNode _valueString_(Object receiver, final String _aString) { return factory.valueString_(_aString); } @Override public <X> X accept_(final NodeVisitor<X> _visitor) { return _visitor.visitDoubleLiteralNode_(this); } @Override public DoubleLiteralNode allNodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { this.nodesDo_(new st.gravel.support.jvm.Block1<Object, Node>() { @Override public Object value_(final Node _each) { return _each.withAllNodesDo_(_aBlock); } }); return this; } @Override public DoubleLiteralNode allNodesDo_pruneWhere_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock, final st.gravel.support.jvm.Block1<Boolean, Node> _pruneBlock) { this.nodesDo_(new st.gravel.support.jvm.Block1<Object, Node>() { @Override public Object value_(final Node _each) { if (!_pruneBlock.value_(_each)) { return _each.withAllNodesDo_pruneWhere_(_aBlock, _pruneBlock); } return DoubleLiteralNode.this; } }); return this; } public DoubleLiteralNode copy() { try { DoubleLiteralNode _temp1 = (DoubleLiteralNode) this.clone(); _temp1.postCopy(); return _temp1; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public DoubleLiteralNode_Factory factory() { return factory; } @Override public DoubleLiteralNode initializeValueString_(final String _aString) { _valueString = _aString; this.initialize(); return this; } @Override public DoubleLiteralNode innerSourceOn_(final StringBuilder _aStream) { _aStream.append(_valueString); return this; } @Override public DoubleLiteralNode localVarNamesDo_(final st.gravel.support.jvm.Block1<Object, String> _aBlock) { return this; } @Override public DoubleLiteralNode negated() { if (st.gravel.support.jvm.CharacterExtensions.equals_(_valueString.charAt(0), '-')) { return DoubleLiteralNode.factory.valueString_(_valueString.substring(1)); } return DoubleLiteralNode.factory.valueString_("-" + _valueString); } @Override public DoubleLiteralNode prettySourceOn_(final StringBuilder _aStream) { SourcePrinter.factory.on_(_aStream).visit_(this); return this; } @Override public DoubleLiteralNode printOn_(final StringBuilder _aStream) { final String _title; _title = this.factory().toString(); _aStream.append(st.gravel.support.jvm.CharacterExtensions.isVowel(_title.charAt(0)) ? "an " : "a "); _aStream.append(_title); _aStream.append('['); this.sourceOn_(_aStream); _aStream.append(']'); return this; } @Override public DoubleLiteralNode pvtSetSourcePosition_(final SourcePosition _aSourcePosition) { _sourcePosition = _aSourcePosition; return this; } @Override public DoubleLiteralNode sourceOn_(final StringBuilder _aStream) { if (!this.needsBrackets()) { return DoubleLiteralNode.this.innerSourceOn_(_aStream); } _aStream.append('('); this.innerSourceOn_(_aStream); _aStream.append(')'); return this; } @Override public Object value() { return st.gravel.support.jvm.StringExtensions.parseDouble(_valueString); } @Override public DoubleLiteralNode withAllNodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { _aBlock.value_(this); this.allNodesDo_(_aBlock); return this; } @Override public DoubleLiteralNode withAllNodesDo_pruneWhere_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock, final st.gravel.support.jvm.Block1<Boolean, Node> _pruneBlock) { _aBlock.value_(this); this.allNodesDo_pruneWhere_(_aBlock, _pruneBlock); return this; } @Override public DoubleLiteralNode withSourcePosition_(final SourcePosition _aSourcePosition) { if (_sourcePosition == _aSourcePosition) { return DoubleLiteralNode.this; } return this.copy().pvtSetSourcePosition_(_aSourcePosition); } }