1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
//
// Mono.ILASM.Report
//
// Author(s):
// Jackson Harper (Jackson@LatitudeGeo.com)
//
// (C) 2003 Jackson Harper, All rights reserved
//
using System;
using System.IO;
namespace Mono.ILASM {
public abstract class Report {
private static int error_count;
private static int mark_count;
private static bool quiet;
/* Current file being processed */
private static string file_path;
static Report ()
{
error_count = 0;
quiet = false;
}
public static int ErrorCount {
get { return error_count; }
}
public static bool Quiet {
get { return quiet; }
set { quiet = value; }
}
public static string FilePath {
get { return file_path; }
set { file_path = value; }
}
public static void AssembleFile (string file, string listing,
string target, string output)
{
Console.WriteLine ("Assembling '{0}' , {1}, to {2} --> '{3}'", file,
GetListing (listing), target, output);
Console.WriteLine ();
}
public static void Error (string message)
{
Error (null, message);
}
public static void Error (Location location, string message)
{
error_count++;
throw new ILAsmException (file_path, location, message);
}
public static void Warning (string message)
{
Warning (null, message);
}
public static void Warning (Location location, string message)
{
string location_str = " : ";
if (location != null)
location_str = " (" + location.line + ", " + location.column + ") : ";
Console.Error.WriteLine (String.Format ("{0}{1}Warning -- {2}",
(file_path != null ? file_path : ""), location_str, message));
}
public static void Message (string message)
{
if (quiet)
return;
Console.WriteLine (message);
}
private static string GetListing (string listing)
{
if (listing == null)
return "no listing file";
return listing;
}
}
public class ILAsmException : Exception {
string message;
string file_path;
Location location;
public ILAsmException (string file_path, Location location, string message)
{
this.file_path = file_path;
this.location = location;
this.message = message;
}
public ILAsmException (Location location, string message)
: this (null, location, message)
{
}
public ILAsmException (string message)
: this (null, null, message)
{
}
public override string Message {
get { return message; }
}
public Location Location {
get { return location; }
set { location = value; }
}
public string FilePath {
get { return file_path; }
set { file_path = value; }
}
public override string ToString ()
{
string location_str = " : ";
if (location != null)
location_str = " (" + location.line + ", " + location.column + ") : ";
return String.Format ("{0}{1}Error : {2}",
(file_path != null ? file_path : ""), location_str, message);
}
}
public class InternalErrorException : Exception {
public InternalErrorException ()
: base ("Internal error")
{
}
public InternalErrorException (string message)
: base (message)
{
}
}
}
|