public const_node create_int_const(string text, SourceContext sc, System.Globalization.NumberStyles NumberStyles) { //таблица целых констант на уровне синтаксиса // не может быть - 0 + // 32--------16----8----|----8----16--------32----------------64(bits) // [ int64 )[ int32 ]( int64 ]( uint64 ] if (NumberStyles == System.Globalization.NumberStyles.HexNumber) { text = text.Substring(1); } const_node cn = new int32_const(); if (text.Length < 8) { (cn as int32_const).val = Int32.Parse(text, NumberStyles); } else { try { UInt64 uint64 = UInt64.Parse(text, NumberStyles); if (uint64 <= Int32.MaxValue) { (cn as int32_const).val = (Int32)uint64; } else if (uint64 <= Int64.MaxValue) { cn = new int64_const((Int64)uint64); } else { cn = new uint64_const(uint64); } } catch (Exception) { if (NumberStyles == System.Globalization.NumberStyles.HexNumber) { errors.Add(new BadHex(CurrentFileName, sc, null)); } else { errors.Add(new BadInt(CurrentFileName, sc, null)); } } } cn.source_context = sc; return(cn); }
public virtual const_node create_int_const(string text, LexLocation loc, System.Globalization.NumberStyles NumberStyles) { if (NumberStyles == System.Globalization.NumberStyles.HexNumber) { text = text.Substring(1); } const_node cn = new int32_const(); if (text.Length < 8) { (cn as int32_const).val = Int32.Parse(text, System.Globalization.NumberStyles.Integer); } else { try { UInt64 uint64 = UInt64.Parse(text, System.Globalization.NumberStyles.Integer); if (uint64 <= Int32.MaxValue) { (cn as int32_const).val = (Int32)uint64; } else if (uint64 <= Int64.MaxValue) { cn = new int64_const((Int64)uint64); } else { cn = new uint64_const(uint64); } } catch (Exception) { if (NumberStyles == System.Globalization.NumberStyles.HexNumber) { GPPGParser.errors.Add(new BadHex(GPPGParser.current_file_name, GetTokenSourceContext(loc), new syntax_tree_node())); } else { GPPGParser.errors.Add(new BadInt(GPPGParser.current_file_name, GetTokenSourceContext(loc), new syntax_tree_node())); } } } cn.source_context = GetTokenSourceContext(loc); return(cn); }
public override void visit(uint64_const _int_const) { text = "Value: " + _int_const.val.ToString(); }
public virtual void visit(uint64_const _uint64_const) { DefaultVisit(_uint64_const); }
public override void visit(uint64_const _uint64_const) { DefaultVisit(_uint64_const); pre_do_visit(_uint64_const); post_do_visit(_uint64_const); }
public virtual void post_do_visit(uint64_const _uint64_const) { }
public virtual void visit(uint64_const _uint64_const) { }
public override void visit(uint64_const _uint64_const) { AddPossibleComments(_uint64_const, true, true); }
public override void visit(uint64_const _int_const) { }
public override void visit(uint64_const _uint64_const) { executer.visit(_uint64_const); if (_uint64_const.attributes != null) this.visit((dynamic)_uint64_const.attributes); }