Add .gitattributes
This commit is contained in:
parent
05e34102d4
commit
8fefb73592
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
* text=auto
|
4224
history.txt
4224
history.txt
File diff suppressed because it is too large
Load Diff
70
license.txt
70
license.txt
@ -1,35 +1,35 @@
|
||||
The software toolkit "Pawn" (the compiler, the abstract machine and the
|
||||
documentation) are copyright (c) 1997-2006 by ITB CompuPhase. The Intel
|
||||
assembler implementation of the abstract machine and the just-in-time
|
||||
compiler (specifically the files AMXEXEC.ASM, JITR.ASM and JITS.ASM) are
|
||||
copyright (c) 1998-2003 Marc Peter. The file JITSN.ASM is translated from
|
||||
JITS.ASM and is partially copyright G.W.M. Vissers. The file AMXEXECN.ASM
|
||||
is translated from AMXEXEC.ASM and is partially copyright ITB CompuPhase.
|
||||
|
||||
Pawn is distributed under the "zLib/libpng" license, which is reproduced
|
||||
below:
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
This software is provided "as-is", without any express or implied warranty.
|
||||
In no event will the authors be held liable for any damages arising from
|
||||
the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software in
|
||||
a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
The zLib/libpng license has been approved by the "Open Source Initiative"
|
||||
organization.
|
||||
The software toolkit "Pawn" (the compiler, the abstract machine and the
|
||||
documentation) are copyright (c) 1997-2006 by ITB CompuPhase. The Intel
|
||||
assembler implementation of the abstract machine and the just-in-time
|
||||
compiler (specifically the files AMXEXEC.ASM, JITR.ASM and JITS.ASM) are
|
||||
copyright (c) 1998-2003 Marc Peter. The file JITSN.ASM is translated from
|
||||
JITS.ASM and is partially copyright G.W.M. Vissers. The file AMXEXECN.ASM
|
||||
is translated from AMXEXEC.ASM and is partially copyright ITB CompuPhase.
|
||||
|
||||
Pawn is distributed under the "zLib/libpng" license, which is reproduced
|
||||
below:
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
This software is provided "as-is", without any express or implied warranty.
|
||||
In no event will the authors be held liable for any damages arising from
|
||||
the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software in
|
||||
a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
The zLib/libpng license has been approved by the "Open Source Initiative"
|
||||
organization.
|
||||
|
594
readme.txt
594
readme.txt
@ -1,297 +1,297 @@
|
||||
the Pawn embedded scripting language
|
||||
====================================
|
||||
Pawn is a simple, typeless, 32-bit extension language with a C-like syntax.
|
||||
The Pawn compiler outputs P-code (or bytecode) that subsequently runs on an
|
||||
abstract machine. Execution speed, stability, simplicity and a small footprint
|
||||
were essential design criterions for both the language and the abstract
|
||||
machine.
|
||||
|
||||
Through the evolution of the Pawn toolkit, this README had steadily been
|
||||
growing, as more and more compilers were tested and more components were added.
|
||||
More recently, the compiling instructions were moved to a separate document
|
||||
entitled "The Pawn booklet: Implementor's Guide". To get the Pawn toolkit
|
||||
working on your system, please (also) consult that document. To learn about
|
||||
the Pawn language, read the document "The Pawn booklet: The Language". If you
|
||||
installed Pawn via the Setup utility (for Microsoft Windows) or the autopackage
|
||||
(for Linux), you probably have these documents already. Otherwise, you can
|
||||
obtain both these documents from the web page devoted to Pawn:
|
||||
http://www.compuphase.com/pawn.htm
|
||||
|
||||
Below is a list of topics that this README covers, in this order:
|
||||
|
||||
o Getting started
|
||||
How to get your first Pawn program running
|
||||
|
||||
o Building with CMake
|
||||
For a portable way to (re-)build the software
|
||||
|
||||
o Acknowledgements
|
||||
For components not written by CompuPhase
|
||||
|
||||
o Using the AMX DLL
|
||||
How to create a program that uses the pre-built DLL.
|
||||
|
||||
o Building the AMX DLL
|
||||
Notes on how the DLL must be built itself.
|
||||
|
||||
o Building extension modules for the AMX DLL
|
||||
|
||||
|
||||
Getting started
|
||||
===============
|
||||
The first question is: what do you need? If you are using Microsoft Windows,
|
||||
download the Pawn toolkit as a self-extracting setup file; this gives
|
||||
everything that you need to get started:
|
||||
o binaries for Win32
|
||||
o full source of all tools/libraries
|
||||
o documentation (Adobe Acrobat format)
|
||||
|
||||
Users of other operating systems should download either the "pawnkit.zip"
|
||||
file or the "pawnkit.tgz" file ("Pawn toolkit" archives), because it
|
||||
contains the full source code. The difference between the "ZIP" file and the
|
||||
"TGZ" file is, apart from the different archiving tool used, that the source
|
||||
file in the ZIP file has DOS/Windows line endings (CR/LF) and the "TGZ" file
|
||||
has Unix line endings (LF only). When "unpacking" these archives, make sure
|
||||
that the directory structure in the ZIP/TGZ files is retained. Otherwise, the
|
||||
Pawn compiler will not be able to find its "include" files, for example.
|
||||
|
||||
You should also download the two documentation files "pawn-lng.pdf" and
|
||||
"pawn-imp.pdf" --the "Language guide" and the "Implementor's guide"
|
||||
respectively. You may need to build the compiler and abstract machine, and
|
||||
the "Implementor's guide" is likely to give you precise guidelines (or at
|
||||
least, it will point you in the right direction). There are a few guidelines
|
||||
for building the system with CMake in the section "Building with CMake", below.
|
||||
|
||||
Assuming that you have obtained (somehow) an executable version of the Pawn
|
||||
compiler and the Pawn run-time, you should put it in a directory. However,
|
||||
the Pawn compiler also needs to locate "include files". On many operating
|
||||
systems, the Pawn compiler is able to automatically read these header files
|
||||
from the directory "include" that is below the directory that the compiler is
|
||||
in itself. Thus, if the Pawn compiler (the executable file) is in directory
|
||||
"C:\WhatEver\Pawn\bin", I suggest that you create either the directory
|
||||
"C:\WhatEver\Pawn\include" or "C:\WhatEver\Pawn\bin\include" and copy the
|
||||
".inc" files there. If your operating system is not compatible with Win32 or
|
||||
Linux, the Pawn compiler may not know how to locate the "include" directory
|
||||
and you have to specify it yourself with the "-i" command line option (when
|
||||
running the compiler).
|
||||
|
||||
That behind your back, locate one of the example scripts (e.g. "hello.p") and
|
||||
compile it with:
|
||||
|
||||
pawncc hello
|
||||
|
||||
This should produce "hello.amx", which you can then run with:
|
||||
|
||||
pawnrun hello.amx
|
||||
|
||||
Many applications that use Pawn, run the Pawn compiler as a child process;
|
||||
i.e. the Pawn compiler is often a separate, self-contained program. The
|
||||
abstract machine, however, is almost never a separate process: typically you
|
||||
want the abstract machine to be integrated in the application so that scripts
|
||||
can call into the application. In other words, you might be using "pawncc" as
|
||||
is, but you won't be using "pawnrun" as is. This is why pawnrun is kept short
|
||||
and dump, "pawnrun" is a program that is mostly developed in the Pawn manual to
|
||||
show you what you should do at a minimum to embed Pawn into a program.
|
||||
|
||||
|
||||
Building with CMake
|
||||
===================
|
||||
CMake is a cross-platform, open-source make system, which generates "makefile's"
|
||||
or project files for diverse compilers and platforms. See http://www.cmake.org/
|
||||
for more information on CMake plus a freely downloadable copy.
|
||||
|
||||
The Pawn toolkit comes with a CMake project file that builds the compiler, a
|
||||
simple run-time program that embeds the abstract machine, and a simple console
|
||||
debugger. The CMake project file is in the "source" subdirectory of where the
|
||||
Pawn toolkit is installed, when you installed the self-extracting "setup" for
|
||||
Microsoft Windows. When unpacking the Pawn source code from a "ZIP" or "TGZ"
|
||||
archive, the CMake project file is in the main directory where you unpacked
|
||||
the archive into.
|
||||
|
||||
Microsoft Windows
|
||||
-----------------
|
||||
1. Launch CMakeSetup.
|
||||
|
||||
2. Select for the source code directory, the "source" subdirectory in the
|
||||
directory tree for the toolkit.
|
||||
|
||||
For example, if you installed the toolkit in C:\Pawn, the source directory
|
||||
is C:\Pawn\source.
|
||||
|
||||
3. Select as destination the "bin" subdirectory, or any other directory of your
|
||||
choice. The makefile (or project files) will be generated in the destination
|
||||
directory.
|
||||
|
||||
4. Select the compiler to use, as well. On Microsoft Windows, CMake supports
|
||||
Microsoft and Borland compilers, as well as GNU GCC.
|
||||
|
||||
5. Click on the "Configure" button. After an initial configuration, you may
|
||||
have items displayed in red. By this, CMake indicates that these items
|
||||
may need adjustment, but in the case of Pawn, this is rarely needed. Click
|
||||
"Configure" once more for the final configuration.
|
||||
|
||||
6. Click on the "OK" button. This exits the CMakeSetup program after creating a
|
||||
number of files in the destination subdirectory.
|
||||
|
||||
7. Build the program in the usual way. For Microsoft Visual C/C++, CMake has
|
||||
created a Visual Studio project and "Workspace" file; for other compilers
|
||||
CMake builds a makefile.
|
||||
|
||||
|
||||
Linux / Unix
|
||||
------------
|
||||
1. Change to the "bin" subdirectory where the archive was extracted into. For
|
||||
example, if you unpacked the toolkit in /opt/Pawn, go to /opt/Pawn/bin.
|
||||
|
||||
If you installed Pawn as root, then you must also be root when you recompile
|
||||
Pawn.
|
||||
|
||||
2. Launch "ccmake ../source" if you installed the Linux autopackage. If you got
|
||||
the "tarball", you may need to use "ccmake .." instead. The parameter of
|
||||
ccmake must be the relative path to where the CMakeLists.txt file is found.
|
||||
|
||||
3. Press the "c" key for "configure". After an initial configuration, you may
|
||||
have items in the list that have a "*" in front of their value. By this,
|
||||
CMake indicates that these items may need adjustment, but in the case of
|
||||
Pawn, this is rarely needed. Type "c" once more for the final configuration.
|
||||
|
||||
4. Press the "g" button for "generate and quit". Then build the program by
|
||||
typing "make". The programs will be built in the subdirectory "bin".
|
||||
|
||||
|
||||
Acknowledgements
|
||||
================
|
||||
This work is based on the "Small C Compiler" by Ron Cain and James E. Hendrix,
|
||||
as published in the book "Dr. Dobb's Toolbook of C", Brady Books, 1986.
|
||||
|
||||
The assembler version of the abstract machine (five times faster than the ANSI
|
||||
C version and over two times faster than the GNU C version) was written by
|
||||
Marc Peter (macpete@gmx.de). Marc holds the copyright of the file AMXEXEC.ASM,
|
||||
but its distribution and license fall under the same conditions as those
|
||||
stated in LICENSE.TXT.
|
||||
|
||||
The Just-In-Time compiler (JIT) included in this release was also written by
|
||||
Marc Peter. As is apparent from the source code, the JIT is an evolutionary
|
||||
step from his earlier abstract machine. The JIT falls under the same (liberal)
|
||||
license as the other components in the Pawn toolkit. The abstract machine
|
||||
has evolved slightly since Marc Peter write the JIT and the JIT does currently
|
||||
not handle the "sleep" instruction correctly.
|
||||
|
||||
The power user David "Bailopan" Anderson (see www.bailopan.net) found many bugs
|
||||
in Pawn, and provided patches and detailed reports. He and his team also
|
||||
provided a new "memory file" module that make the compiler process large scripts
|
||||
quicker.
|
||||
|
||||
G.W.M. Vissers translated Marc Peter's JIT to NASM. This makes the JIT available
|
||||
to Linux and Unix-like platforms.
|
||||
|
||||
Greg Garner from Artran Inc. compiled the source files as C++ files (rather
|
||||
than C), added type casts where needed and fixed two bugs in the Pawn compiler
|
||||
in the process. Greg Garner also wrote (and contributed) the extension module
|
||||
for floating point support (files FLOAT.CPP and FLOAT.INC). I am currently
|
||||
maintaining these modules, in order to keep them up to date with new features
|
||||
in the Pawn toolkit.
|
||||
|
||||
Dark Fiber contributed an extension module for the AMX to provide decent
|
||||
quality pseudo-random numbers, starting with any seed. To illustrate the
|
||||
module, he also wrote a simple card game (TWENTY1.SMA) as a non-trivial
|
||||
Pawn script.
|
||||
|
||||
Dieter Neubauer made a 16-bit version of the Pawn tools (meaning that a cell
|
||||
is 16-bit, instead of the default 32-bit). His changes were merged in the
|
||||
original distribution. Note that fixed or floating point arithmetic will be
|
||||
near to impossible with a 16-bit cell.
|
||||
|
||||
Robert Daniels ported Pawn to ucLinux and corrected a few errors that had to
|
||||
do with the "Endianness" of the CPU. His corrections make the Pawn compiler
|
||||
and abstract machine better portable to Big Endian machines.
|
||||
|
||||
Frank Condello made a port of the Pawn toolkit to MacOS (CFM Carbon). His
|
||||
changes are merged into the main source trunk.
|
||||
|
||||
|
||||
Using the AMX DLL
|
||||
=================
|
||||
The 32-bit AMX DLL (file AMX32.DLL) uses __stdcall calling convention, which
|
||||
is the most common calling convention for Win32 DLLs. If your compiler defaults
|
||||
to a different calling convention (most do), you must specify the __stdcall
|
||||
calling convention explicitly. This can be done in two ways:
|
||||
1. a command line option for the C/C++ compiler (look up the manual)
|
||||
2. setting the macros AMX_NATIVE_CALL and AMXAPI to __stdcall before including
|
||||
AMX.H. The macros AMX_NATIVE_CALL and AMXAPI are explained earlier in this
|
||||
README.
|
||||
|
||||
The 32-bit AMX DLL comes with import libraries for various Win32 compilers:
|
||||
o for Microsoft Visual C/C++ version 4.0 and above, use AMX32M.LIB
|
||||
o for Borland C++ version 5.0 and for Borland C++ Builder, use AMX32B.LIB
|
||||
o for Watcom C/C++ version 10.6 and 11.0, use AMX32W.LIB
|
||||
|
||||
The AMX DLL already includes "core" and "console" functions, which are the
|
||||
equivalents of the C files AMXCORE.C and AMXCONS.C. Console output goes to a
|
||||
text window (with 30 lines of 80 characters per line) that the DLL creates.
|
||||
The core and console functions are automatically registered to any Pawn
|
||||
program by amx_Init().
|
||||
|
||||
Microsoft Visual C/C++ version 5.0 or 6.0, 32-bit:
|
||||
cl -DAMXAPI=__stdcall prun-dll.c amx32m.lib
|
||||
|
||||
(Note: the "prun-dll" example does not register additional native
|
||||
functions. Therefore, AMX_NATIVE_CALL does not need to be defined.)
|
||||
|
||||
Watcom C/C++ version 11.0, 32-bit:
|
||||
wcl386 /l=nt_win /dAMXAPI=__stdcall prun-dll.c amx32w.lib
|
||||
|
||||
(Note: the "prun-dll" example does not register additional native
|
||||
functions. Therefore, AMX_NATIVE_CALL does not need to be defined.)
|
||||
|
||||
Borland C++ version 3.1, 16-bit:
|
||||
bcc -DAMXAPI=__cdecl -W -ml prun-dll.c amx16.lib
|
||||
|
||||
(Note: the program must be compiled as a Win16 application, because
|
||||
only Windows programs can use DLLs (option -W). Using large memory
|
||||
model, option -ml, is not strictly required, but it is the most
|
||||
convenient. Finally, note that the 16-bit DLL uses __cdecl calling
|
||||
convention for its exported functions, for reasons explained below.)
|
||||
|
||||
|
||||
Building the AMX DLL
|
||||
====================
|
||||
The 32-bit DLL is made from the files AMX.C, AMXDLL.C, AMXCONS.C, AMXCORE.C
|
||||
and AMXEXEC.ASM.
|
||||
|
||||
The first point to address is, again, that of calling conventions. AMXAPI and
|
||||
AMX_NATIVE_CALL must be set to __stdcall. I did this by adding the macros onto
|
||||
the command line for the compiler, but you could also create an include file
|
||||
with these macros before including AMX.H.
|
||||
|
||||
The function amx_Init() of the DLL is not identical to the standard version:
|
||||
it also registers the "core" and "console" modules and registers external
|
||||
libraries if it can find these. The original amx_Init() in AMX.C is renamed to
|
||||
amx_InitAMX(), via macros, at compile time. AMXDLL.C implements the new
|
||||
amx_Init() and this one is not translated.
|
||||
|
||||
All in all, the makefile for the AMX DLL plays a few tricks with macros in
|
||||
order to keep the original distribution untouched. When you need to recompile
|
||||
the AMX DLL, you may, of course, also opt for modifying AMX.H and AMX.C to
|
||||
suit the needs for Win32 DLLs.
|
||||
|
||||
If you rebuild the DLL for 16-bit Windows, keep the following points in mind:
|
||||
o You must use the ANSI C version of the abstract machine; there is no
|
||||
16-bit assembler implementation.
|
||||
o Use large memory model: pointers used in "interface" functions must be far
|
||||
pointers to bridge the data spaces of the .EXE and the DLL. The source
|
||||
code is (mostly) ANSI C, however, and "far pointers" are an extension to
|
||||
ANSI C. The easiest way out is to make all pointers "far" by using large
|
||||
memory model.
|
||||
o AMX_NATIVE_CALL are best set to "__far __pascal". This is the "standard"
|
||||
calling convention for have interface functions in 16-bit Windows.
|
||||
o The native functions should also be exported, so that the data segment is
|
||||
set to that of the module that the native functions reside in.
|
||||
o AMXAPI, however, must be set to "__cdecl", because amx_Exec() uses a
|
||||
variable length argument list. This is incompatible with the "pascal"
|
||||
calling convention.
|
||||
|
||||
The distribution for the AMX DLL comes with two makefiles: the makefile for the
|
||||
32-bit DLL is for Watcom C/C++ and the makefile for the 16-bit DLL is for
|
||||
Borland C++ (Inprise).
|
||||
|
||||
the Pawn embedded scripting language
|
||||
====================================
|
||||
Pawn is a simple, typeless, 32-bit extension language with a C-like syntax.
|
||||
The Pawn compiler outputs P-code (or bytecode) that subsequently runs on an
|
||||
abstract machine. Execution speed, stability, simplicity and a small footprint
|
||||
were essential design criterions for both the language and the abstract
|
||||
machine.
|
||||
|
||||
Through the evolution of the Pawn toolkit, this README had steadily been
|
||||
growing, as more and more compilers were tested and more components were added.
|
||||
More recently, the compiling instructions were moved to a separate document
|
||||
entitled "The Pawn booklet: Implementor's Guide". To get the Pawn toolkit
|
||||
working on your system, please (also) consult that document. To learn about
|
||||
the Pawn language, read the document "The Pawn booklet: The Language". If you
|
||||
installed Pawn via the Setup utility (for Microsoft Windows) or the autopackage
|
||||
(for Linux), you probably have these documents already. Otherwise, you can
|
||||
obtain both these documents from the web page devoted to Pawn:
|
||||
http://www.compuphase.com/pawn.htm
|
||||
|
||||
Below is a list of topics that this README covers, in this order:
|
||||
|
||||
o Getting started
|
||||
How to get your first Pawn program running
|
||||
|
||||
o Building with CMake
|
||||
For a portable way to (re-)build the software
|
||||
|
||||
o Acknowledgements
|
||||
For components not written by CompuPhase
|
||||
|
||||
o Using the AMX DLL
|
||||
How to create a program that uses the pre-built DLL.
|
||||
|
||||
o Building the AMX DLL
|
||||
Notes on how the DLL must be built itself.
|
||||
|
||||
o Building extension modules for the AMX DLL
|
||||
|
||||
|
||||
Getting started
|
||||
===============
|
||||
The first question is: what do you need? If you are using Microsoft Windows,
|
||||
download the Pawn toolkit as a self-extracting setup file; this gives
|
||||
everything that you need to get started:
|
||||
o binaries for Win32
|
||||
o full source of all tools/libraries
|
||||
o documentation (Adobe Acrobat format)
|
||||
|
||||
Users of other operating systems should download either the "pawnkit.zip"
|
||||
file or the "pawnkit.tgz" file ("Pawn toolkit" archives), because it
|
||||
contains the full source code. The difference between the "ZIP" file and the
|
||||
"TGZ" file is, apart from the different archiving tool used, that the source
|
||||
file in the ZIP file has DOS/Windows line endings (CR/LF) and the "TGZ" file
|
||||
has Unix line endings (LF only). When "unpacking" these archives, make sure
|
||||
that the directory structure in the ZIP/TGZ files is retained. Otherwise, the
|
||||
Pawn compiler will not be able to find its "include" files, for example.
|
||||
|
||||
You should also download the two documentation files "pawn-lng.pdf" and
|
||||
"pawn-imp.pdf" --the "Language guide" and the "Implementor's guide"
|
||||
respectively. You may need to build the compiler and abstract machine, and
|
||||
the "Implementor's guide" is likely to give you precise guidelines (or at
|
||||
least, it will point you in the right direction). There are a few guidelines
|
||||
for building the system with CMake in the section "Building with CMake", below.
|
||||
|
||||
Assuming that you have obtained (somehow) an executable version of the Pawn
|
||||
compiler and the Pawn run-time, you should put it in a directory. However,
|
||||
the Pawn compiler also needs to locate "include files". On many operating
|
||||
systems, the Pawn compiler is able to automatically read these header files
|
||||
from the directory "include" that is below the directory that the compiler is
|
||||
in itself. Thus, if the Pawn compiler (the executable file) is in directory
|
||||
"C:\WhatEver\Pawn\bin", I suggest that you create either the directory
|
||||
"C:\WhatEver\Pawn\include" or "C:\WhatEver\Pawn\bin\include" and copy the
|
||||
".inc" files there. If your operating system is not compatible with Win32 or
|
||||
Linux, the Pawn compiler may not know how to locate the "include" directory
|
||||
and you have to specify it yourself with the "-i" command line option (when
|
||||
running the compiler).
|
||||
|
||||
That behind your back, locate one of the example scripts (e.g. "hello.p") and
|
||||
compile it with:
|
||||
|
||||
pawncc hello
|
||||
|
||||
This should produce "hello.amx", which you can then run with:
|
||||
|
||||
pawnrun hello.amx
|
||||
|
||||
Many applications that use Pawn, run the Pawn compiler as a child process;
|
||||
i.e. the Pawn compiler is often a separate, self-contained program. The
|
||||
abstract machine, however, is almost never a separate process: typically you
|
||||
want the abstract machine to be integrated in the application so that scripts
|
||||
can call into the application. In other words, you might be using "pawncc" as
|
||||
is, but you won't be using "pawnrun" as is. This is why pawnrun is kept short
|
||||
and dump, "pawnrun" is a program that is mostly developed in the Pawn manual to
|
||||
show you what you should do at a minimum to embed Pawn into a program.
|
||||
|
||||
|
||||
Building with CMake
|
||||
===================
|
||||
CMake is a cross-platform, open-source make system, which generates "makefile's"
|
||||
or project files for diverse compilers and platforms. See http://www.cmake.org/
|
||||
for more information on CMake plus a freely downloadable copy.
|
||||
|
||||
The Pawn toolkit comes with a CMake project file that builds the compiler, a
|
||||
simple run-time program that embeds the abstract machine, and a simple console
|
||||
debugger. The CMake project file is in the "source" subdirectory of where the
|
||||
Pawn toolkit is installed, when you installed the self-extracting "setup" for
|
||||
Microsoft Windows. When unpacking the Pawn source code from a "ZIP" or "TGZ"
|
||||
archive, the CMake project file is in the main directory where you unpacked
|
||||
the archive into.
|
||||
|
||||
Microsoft Windows
|
||||
-----------------
|
||||
1. Launch CMakeSetup.
|
||||
|
||||
2. Select for the source code directory, the "source" subdirectory in the
|
||||
directory tree for the toolkit.
|
||||
|
||||
For example, if you installed the toolkit in C:\Pawn, the source directory
|
||||
is C:\Pawn\source.
|
||||
|
||||
3. Select as destination the "bin" subdirectory, or any other directory of your
|
||||
choice. The makefile (or project files) will be generated in the destination
|
||||
directory.
|
||||
|
||||
4. Select the compiler to use, as well. On Microsoft Windows, CMake supports
|
||||
Microsoft and Borland compilers, as well as GNU GCC.
|
||||
|
||||
5. Click on the "Configure" button. After an initial configuration, you may
|
||||
have items displayed in red. By this, CMake indicates that these items
|
||||
may need adjustment, but in the case of Pawn, this is rarely needed. Click
|
||||
"Configure" once more for the final configuration.
|
||||
|
||||
6. Click on the "OK" button. This exits the CMakeSetup program after creating a
|
||||
number of files in the destination subdirectory.
|
||||
|
||||
7. Build the program in the usual way. For Microsoft Visual C/C++, CMake has
|
||||
created a Visual Studio project and "Workspace" file; for other compilers
|
||||
CMake builds a makefile.
|
||||
|
||||
|
||||
Linux / Unix
|
||||
------------
|
||||
1. Change to the "bin" subdirectory where the archive was extracted into. For
|
||||
example, if you unpacked the toolkit in /opt/Pawn, go to /opt/Pawn/bin.
|
||||
|
||||
If you installed Pawn as root, then you must also be root when you recompile
|
||||
Pawn.
|
||||
|
||||
2. Launch "ccmake ../source" if you installed the Linux autopackage. If you got
|
||||
the "tarball", you may need to use "ccmake .." instead. The parameter of
|
||||
ccmake must be the relative path to where the CMakeLists.txt file is found.
|
||||
|
||||
3. Press the "c" key for "configure". After an initial configuration, you may
|
||||
have items in the list that have a "*" in front of their value. By this,
|
||||
CMake indicates that these items may need adjustment, but in the case of
|
||||
Pawn, this is rarely needed. Type "c" once more for the final configuration.
|
||||
|
||||
4. Press the "g" button for "generate and quit". Then build the program by
|
||||
typing "make". The programs will be built in the subdirectory "bin".
|
||||
|
||||
|
||||
Acknowledgements
|
||||
================
|
||||
This work is based on the "Small C Compiler" by Ron Cain and James E. Hendrix,
|
||||
as published in the book "Dr. Dobb's Toolbook of C", Brady Books, 1986.
|
||||
|
||||
The assembler version of the abstract machine (five times faster than the ANSI
|
||||
C version and over two times faster than the GNU C version) was written by
|
||||
Marc Peter (macpete@gmx.de). Marc holds the copyright of the file AMXEXEC.ASM,
|
||||
but its distribution and license fall under the same conditions as those
|
||||
stated in LICENSE.TXT.
|
||||
|
||||
The Just-In-Time compiler (JIT) included in this release was also written by
|
||||
Marc Peter. As is apparent from the source code, the JIT is an evolutionary
|
||||
step from his earlier abstract machine. The JIT falls under the same (liberal)
|
||||
license as the other components in the Pawn toolkit. The abstract machine
|
||||
has evolved slightly since Marc Peter write the JIT and the JIT does currently
|
||||
not handle the "sleep" instruction correctly.
|
||||
|
||||
The power user David "Bailopan" Anderson (see www.bailopan.net) found many bugs
|
||||
in Pawn, and provided patches and detailed reports. He and his team also
|
||||
provided a new "memory file" module that make the compiler process large scripts
|
||||
quicker.
|
||||
|
||||
G.W.M. Vissers translated Marc Peter's JIT to NASM. This makes the JIT available
|
||||
to Linux and Unix-like platforms.
|
||||
|
||||
Greg Garner from Artran Inc. compiled the source files as C++ files (rather
|
||||
than C), added type casts where needed and fixed two bugs in the Pawn compiler
|
||||
in the process. Greg Garner also wrote (and contributed) the extension module
|
||||
for floating point support (files FLOAT.CPP and FLOAT.INC). I am currently
|
||||
maintaining these modules, in order to keep them up to date with new features
|
||||
in the Pawn toolkit.
|
||||
|
||||
Dark Fiber contributed an extension module for the AMX to provide decent
|
||||
quality pseudo-random numbers, starting with any seed. To illustrate the
|
||||
module, he also wrote a simple card game (TWENTY1.SMA) as a non-trivial
|
||||
Pawn script.
|
||||
|
||||
Dieter Neubauer made a 16-bit version of the Pawn tools (meaning that a cell
|
||||
is 16-bit, instead of the default 32-bit). His changes were merged in the
|
||||
original distribution. Note that fixed or floating point arithmetic will be
|
||||
near to impossible with a 16-bit cell.
|
||||
|
||||
Robert Daniels ported Pawn to ucLinux and corrected a few errors that had to
|
||||
do with the "Endianness" of the CPU. His corrections make the Pawn compiler
|
||||
and abstract machine better portable to Big Endian machines.
|
||||
|
||||
Frank Condello made a port of the Pawn toolkit to MacOS (CFM Carbon). His
|
||||
changes are merged into the main source trunk.
|
||||
|
||||
|
||||
Using the AMX DLL
|
||||
=================
|
||||
The 32-bit AMX DLL (file AMX32.DLL) uses __stdcall calling convention, which
|
||||
is the most common calling convention for Win32 DLLs. If your compiler defaults
|
||||
to a different calling convention (most do), you must specify the __stdcall
|
||||
calling convention explicitly. This can be done in two ways:
|
||||
1. a command line option for the C/C++ compiler (look up the manual)
|
||||
2. setting the macros AMX_NATIVE_CALL and AMXAPI to __stdcall before including
|
||||
AMX.H. The macros AMX_NATIVE_CALL and AMXAPI are explained earlier in this
|
||||
README.
|
||||
|
||||
The 32-bit AMX DLL comes with import libraries for various Win32 compilers:
|
||||
o for Microsoft Visual C/C++ version 4.0 and above, use AMX32M.LIB
|
||||
o for Borland C++ version 5.0 and for Borland C++ Builder, use AMX32B.LIB
|
||||
o for Watcom C/C++ version 10.6 and 11.0, use AMX32W.LIB
|
||||
|
||||
The AMX DLL already includes "core" and "console" functions, which are the
|
||||
equivalents of the C files AMXCORE.C and AMXCONS.C. Console output goes to a
|
||||
text window (with 30 lines of 80 characters per line) that the DLL creates.
|
||||
The core and console functions are automatically registered to any Pawn
|
||||
program by amx_Init().
|
||||
|
||||
Microsoft Visual C/C++ version 5.0 or 6.0, 32-bit:
|
||||
cl -DAMXAPI=__stdcall prun-dll.c amx32m.lib
|
||||
|
||||
(Note: the "prun-dll" example does not register additional native
|
||||
functions. Therefore, AMX_NATIVE_CALL does not need to be defined.)
|
||||
|
||||
Watcom C/C++ version 11.0, 32-bit:
|
||||
wcl386 /l=nt_win /dAMXAPI=__stdcall prun-dll.c amx32w.lib
|
||||
|
||||
(Note: the "prun-dll" example does not register additional native
|
||||
functions. Therefore, AMX_NATIVE_CALL does not need to be defined.)
|
||||
|
||||
Borland C++ version 3.1, 16-bit:
|
||||
bcc -DAMXAPI=__cdecl -W -ml prun-dll.c amx16.lib
|
||||
|
||||
(Note: the program must be compiled as a Win16 application, because
|
||||
only Windows programs can use DLLs (option -W). Using large memory
|
||||
model, option -ml, is not strictly required, but it is the most
|
||||
convenient. Finally, note that the 16-bit DLL uses __cdecl calling
|
||||
convention for its exported functions, for reasons explained below.)
|
||||
|
||||
|
||||
Building the AMX DLL
|
||||
====================
|
||||
The 32-bit DLL is made from the files AMX.C, AMXDLL.C, AMXCONS.C, AMXCORE.C
|
||||
and AMXEXEC.ASM.
|
||||
|
||||
The first point to address is, again, that of calling conventions. AMXAPI and
|
||||
AMX_NATIVE_CALL must be set to __stdcall. I did this by adding the macros onto
|
||||
the command line for the compiler, but you could also create an include file
|
||||
with these macros before including AMX.H.
|
||||
|
||||
The function amx_Init() of the DLL is not identical to the standard version:
|
||||
it also registers the "core" and "console" modules and registers external
|
||||
libraries if it can find these. The original amx_Init() in AMX.C is renamed to
|
||||
amx_InitAMX(), via macros, at compile time. AMXDLL.C implements the new
|
||||
amx_Init() and this one is not translated.
|
||||
|
||||
All in all, the makefile for the AMX DLL plays a few tricks with macros in
|
||||
order to keep the original distribution untouched. When you need to recompile
|
||||
the AMX DLL, you may, of course, also opt for modifying AMX.H and AMX.C to
|
||||
suit the needs for Win32 DLLs.
|
||||
|
||||
If you rebuild the DLL for 16-bit Windows, keep the following points in mind:
|
||||
o You must use the ANSI C version of the abstract machine; there is no
|
||||
16-bit assembler implementation.
|
||||
o Use large memory model: pointers used in "interface" functions must be far
|
||||
pointers to bridge the data spaces of the .EXE and the DLL. The source
|
||||
code is (mostly) ANSI C, however, and "far pointers" are an extension to
|
||||
ANSI C. The easiest way out is to make all pointers "far" by using large
|
||||
memory model.
|
||||
o AMX_NATIVE_CALL are best set to "__far __pascal". This is the "standard"
|
||||
calling convention for have interface functions in 16-bit Windows.
|
||||
o The native functions should also be exported, so that the data segment is
|
||||
set to that of the module that the native functions reside in.
|
||||
o AMXAPI, however, must be set to "__cdecl", because amx_Exec() uses a
|
||||
variable length argument list. This is incompatible with the "pascal"
|
||||
calling convention.
|
||||
|
||||
The distribution for the AMX DLL comes with two makefiles: the makefile for the
|
||||
32-bit DLL is for Watcom C/C++ and the makefile for the 16-bit DLL is for
|
||||
Borland C++ (Inprise).
|
||||
|
||||
|
@ -1,74 +1,74 @@
|
||||
#build file for CMake, see http://www.cmake.org/
|
||||
|
||||
PROJECT(pawnc)
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
||||
|
||||
# check for optional include files
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
|
||||
CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
|
||||
IF(HAVE_UNISTD_H)
|
||||
ADD_DEFINITIONS(-DHAVE_UNISTD_H)
|
||||
ENDIF(HAVE_UNISTD_H)
|
||||
CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
|
||||
IF(HAVE_INTTYPES_H)
|
||||
ADD_DEFINITIONS(-DHAVE_INTTYPES_H)
|
||||
ENDIF(HAVE_INTTYPES_H)
|
||||
CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H)
|
||||
IF(HAVE_STDINT_H)
|
||||
ADD_DEFINITIONS(-DHAVE_STDINT_H)
|
||||
ENDIF(HAVE_STDINT_H)
|
||||
CHECK_INCLUDE_FILE("alloca.h" HAVE_ALLOCA_H)
|
||||
IF(HAVE_ALLOCA_H)
|
||||
ADD_DEFINITIONS(-DHAVE_ALLOCA_H)
|
||||
ENDIF(HAVE_ALLOCA_H)
|
||||
|
||||
IF(UNIX)
|
||||
ADD_DEFINITIONS(-DLINUX -DENABLE_BINRELOC -g)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../linux)
|
||||
LINK_LIBRARIES(pthread) #CMake adds the "lib" prefix, so "pthread" becomes "libpthread"
|
||||
ENDIF(UNIX)
|
||||
|
||||
# The Pawn compiler shared library
|
||||
SET(PAWNC_SRCS sc1.c sc2.c sc3.c sc4.c sc5.c sc6.c sc7.c
|
||||
scexpand.c sci18n.c sclist.c scmemfil.c scstate.c scvars.c
|
||||
lstring.c memfile.c libpawnc.c)
|
||||
SET_SOURCE_FILES_PROPERTIES(sc1.c COMPILE_FLAGS -DNO_MAIN)
|
||||
IF(WIN32)
|
||||
SET(PAWNC_SRCS ${PAWNC_SRCS} libpawnc.rc)
|
||||
SET_SOURCE_FILES_PROPERTIES(libpawnc.c COMPILE_FLAGS -DPAWNC_DLL)
|
||||
IF(BORLAND)
|
||||
# Borland linker uses a DEF file if one is in the output directory
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libpawnc.def.borland ${CMAKE_BINARY_DIR}/pawnc.def COPY_ONLY)
|
||||
ELSE(BORLAND)
|
||||
# Microsoft Visual C/C++ supports a DEF file as if it were a source file
|
||||
SET(PAWNC_SRCS ${PAWNC_SRCS} libpawnc.def)
|
||||
ENDIF(BORLAND)
|
||||
ENDIF(WIN32)
|
||||
IF(UNIX)
|
||||
SET(PAWNC_SRCS ${PAWNC_SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/../linux/binreloc.c)
|
||||
ENDIF(UNIX)
|
||||
ADD_LIBRARY(pawnc SHARED ${PAWNC_SRCS})
|
||||
IF(WATCOM) #Watcom C/C++ does not support a .DEF file for the exports
|
||||
SET_TARGET_PROPERTIES(pawnc PROPERTIES LINK_FLAGS "/exp=libpawnc")
|
||||
ENDIF(WATCOM)
|
||||
IF(UNIX AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
# Unix exports all symbols by default; we want only a very select few exported symbols
|
||||
ADD_CUSTOM_COMMAND(TARGET pawnc POST_BUILD COMMAND strip ARGS -K pc_compile -K pc_addconstant -K pc_addtag -K pc_enablewarning ${CMAKE_BINARY_DIR}/libpawnc.so)
|
||||
ENDIF(UNIX AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
||||
|
||||
# The Pawn compiler driver (console program)
|
||||
SET(PAWNCC_SRCS pawncc.c)
|
||||
IF(WIN32)
|
||||
SET(PAWNCC_SRCS ${PAWNCC_SRCS} libpawnc.rc)
|
||||
IF(BORLAND)
|
||||
# Borland linker uses a DEF file if one is in the output directory
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pawncc.def.borland ${CMAKE_BINARY_DIR}/pawncc.def COPY_ONLY)
|
||||
ELSE(BORLAND)
|
||||
# Microsoft Visual C/C++ supports a DEF file as if it were a source file
|
||||
SET(PAWNC_SRCS ${PAWNC_SRCS} pawncc.def)
|
||||
ENDIF(BORLAND)
|
||||
ENDIF(WIN32)
|
||||
ADD_EXECUTABLE(pawncc ${PAWNCC_SRCS})
|
||||
TARGET_LINK_LIBRARIES(pawncc pawnc)
|
||||
#build file for CMake, see http://www.cmake.org/
|
||||
|
||||
PROJECT(pawnc)
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
||||
|
||||
# check for optional include files
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
|
||||
CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
|
||||
IF(HAVE_UNISTD_H)
|
||||
ADD_DEFINITIONS(-DHAVE_UNISTD_H)
|
||||
ENDIF(HAVE_UNISTD_H)
|
||||
CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
|
||||
IF(HAVE_INTTYPES_H)
|
||||
ADD_DEFINITIONS(-DHAVE_INTTYPES_H)
|
||||
ENDIF(HAVE_INTTYPES_H)
|
||||
CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H)
|
||||
IF(HAVE_STDINT_H)
|
||||
ADD_DEFINITIONS(-DHAVE_STDINT_H)
|
||||
ENDIF(HAVE_STDINT_H)
|
||||
CHECK_INCLUDE_FILE("alloca.h" HAVE_ALLOCA_H)
|
||||
IF(HAVE_ALLOCA_H)
|
||||
ADD_DEFINITIONS(-DHAVE_ALLOCA_H)
|
||||
ENDIF(HAVE_ALLOCA_H)
|
||||
|
||||
IF(UNIX)
|
||||
ADD_DEFINITIONS(-DLINUX -DENABLE_BINRELOC -g)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../linux)
|
||||
LINK_LIBRARIES(pthread) #CMake adds the "lib" prefix, so "pthread" becomes "libpthread"
|
||||
ENDIF(UNIX)
|
||||
|
||||
# The Pawn compiler shared library
|
||||
SET(PAWNC_SRCS sc1.c sc2.c sc3.c sc4.c sc5.c sc6.c sc7.c
|
||||
scexpand.c sci18n.c sclist.c scmemfil.c scstate.c scvars.c
|
||||
lstring.c memfile.c libpawnc.c)
|
||||
SET_SOURCE_FILES_PROPERTIES(sc1.c COMPILE_FLAGS -DNO_MAIN)
|
||||
IF(WIN32)
|
||||
SET(PAWNC_SRCS ${PAWNC_SRCS} libpawnc.rc)
|
||||
SET_SOURCE_FILES_PROPERTIES(libpawnc.c COMPILE_FLAGS -DPAWNC_DLL)
|
||||
IF(BORLAND)
|
||||
# Borland linker uses a DEF file if one is in the output directory
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libpawnc.def.borland ${CMAKE_BINARY_DIR}/pawnc.def COPY_ONLY)
|
||||
ELSE(BORLAND)
|
||||
# Microsoft Visual C/C++ supports a DEF file as if it were a source file
|
||||
SET(PAWNC_SRCS ${PAWNC_SRCS} libpawnc.def)
|
||||
ENDIF(BORLAND)
|
||||
ENDIF(WIN32)
|
||||
IF(UNIX)
|
||||
SET(PAWNC_SRCS ${PAWNC_SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/../linux/binreloc.c)
|
||||
ENDIF(UNIX)
|
||||
ADD_LIBRARY(pawnc SHARED ${PAWNC_SRCS})
|
||||
IF(WATCOM) #Watcom C/C++ does not support a .DEF file for the exports
|
||||
SET_TARGET_PROPERTIES(pawnc PROPERTIES LINK_FLAGS "/exp=libpawnc")
|
||||
ENDIF(WATCOM)
|
||||
IF(UNIX AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
# Unix exports all symbols by default; we want only a very select few exported symbols
|
||||
ADD_CUSTOM_COMMAND(TARGET pawnc POST_BUILD COMMAND strip ARGS -K pc_compile -K pc_addconstant -K pc_addtag -K pc_enablewarning ${CMAKE_BINARY_DIR}/libpawnc.so)
|
||||
ENDIF(UNIX AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
||||
|
||||
# The Pawn compiler driver (console program)
|
||||
SET(PAWNCC_SRCS pawncc.c)
|
||||
IF(WIN32)
|
||||
SET(PAWNCC_SRCS ${PAWNCC_SRCS} libpawnc.rc)
|
||||
IF(BORLAND)
|
||||
# Borland linker uses a DEF file if one is in the output directory
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pawncc.def.borland ${CMAKE_BINARY_DIR}/pawncc.def COPY_ONLY)
|
||||
ELSE(BORLAND)
|
||||
# Microsoft Visual C/C++ supports a DEF file as if it were a source file
|
||||
SET(PAWNC_SRCS ${PAWNC_SRCS} pawncc.def)
|
||||
ENDIF(BORLAND)
|
||||
ENDIF(WIN32)
|
||||
ADD_EXECUTABLE(pawncc ${PAWNCC_SRCS})
|
||||
TARGET_LINK_LIBRARIES(pawncc pawnc)
|
||||
|
@ -1,8 +1,8 @@
|
||||
LIBRARY PAWNC
|
||||
DESCRIPTION 'Pawn compiler'
|
||||
|
||||
EXPORTS Compile
|
||||
pc_compile
|
||||
pc_addconstant
|
||||
pc_addtag
|
||||
pc_enablewarning
|
||||
LIBRARY PAWNC
|
||||
DESCRIPTION 'Pawn compiler'
|
||||
|
||||
EXPORTS Compile
|
||||
pc_compile
|
||||
pc_addconstant
|
||||
pc_addtag
|
||||
pc_enablewarning
|
||||
|
@ -1,8 +1,8 @@
|
||||
LIBRARY PAWNC
|
||||
DESCRIPTION 'Pawn compiler'
|
||||
|
||||
EXPORTS Compile
|
||||
pc_compile = _pc_compile
|
||||
pc_addconstant = _pc_addconstant
|
||||
pc_addtag = _pc_addtag
|
||||
pc_enablewarning = _pc_enablewarning
|
||||
LIBRARY PAWNC
|
||||
DESCRIPTION 'Pawn compiler'
|
||||
|
||||
EXPORTS Compile
|
||||
pc_compile = _pc_compile
|
||||
pc_addconstant = _pc_addconstant
|
||||
pc_addtag = _pc_addtag
|
||||
pc_enablewarning = _pc_enablewarning
|
||||
|
@ -1,6 +1,6 @@
|
||||
++_Compile@16 .libpawnc .Compile
|
||||
++pc_compile .libpawnc .pc_compile
|
||||
++pc_addconstant .libpawnc .pc_addconstant
|
||||
++pc_addtag .libpawnc .pc_addtag
|
||||
++pc_enablewarning .libpawnc .pc_enablewarning
|
||||
++pc_printf .libpawnc .pc_printf
|
||||
++_Compile@16 .libpawnc .Compile
|
||||
++pc_compile .libpawnc .pc_compile
|
||||
++pc_addconstant .libpawnc .pc_addconstant
|
||||
++pc_addtag .libpawnc .pc_addtag
|
||||
++pc_enablewarning .libpawnc .pc_enablewarning
|
||||
++pc_printf .libpawnc .pc_printf
|
||||
|
@ -1,63 +1,63 @@
|
||||
#include <windows.h>
|
||||
#if defined WIN32 || defined _WIN32 || defined __WIN32__
|
||||
# include <winver.h>
|
||||
#else
|
||||
# include <ver.h>
|
||||
#endif
|
||||
#include "svnrev.h"
|
||||
|
||||
AppIcon ICON "../bin/pawn.ico"
|
||||
|
||||
/* Version information
|
||||
*
|
||||
* All strings MUST have an explicit \0. See the Windows SDK documentation
|
||||
* for details on version information and the VERSIONINFO structure.
|
||||
*/
|
||||
#define VERSION 3
|
||||
#define REVISION 2
|
||||
#define BUILD SVN_REV
|
||||
#define VERSIONSTR "3.2." SVN_REVSTR "\0"
|
||||
#if defined STAND_ALONE
|
||||
#define VERSIONNAME "pawncc.exe\0"
|
||||
#define VERSIONDESCRIPTION "Pawn Compiler\0"
|
||||
#define VERSIONPRODUCTNAME "pawncc\0"
|
||||
#else
|
||||
#define VERSIONNAME "libpawnc.dll\0"
|
||||
#define VERSIONDESCRIPTION "Pawn Compiler library\0"
|
||||
#define VERSIONPRODUCTNAME "libpawnc\0"
|
||||
#endif
|
||||
#define VERSIONCOMPANYNAME "ITB CompuPhase\0"
|
||||
#define VERSIONCOPYRIGHT "Copyright \251 1998-2006 ITB CompuPhase\0"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION VERSION, REVISION, BUILD, 0
|
||||
PRODUCTVERSION VERSION, REVISION, BUILD, 0
|
||||
FILEFLAGSMASK 0x0000003FL
|
||||
FILEFLAGS 0
|
||||
#if defined(WIN32)
|
||||
FILEOS VOS__WINDOWS32
|
||||
#else
|
||||
FILEOS VOS__WINDOWS16
|
||||
#endif
|
||||
FILETYPE VFT_DLL
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", VERSIONCOMPANYNAME
|
||||
VALUE "FileDescription", VERSIONDESCRIPTION
|
||||
VALUE "FileVersion", VERSIONSTR
|
||||
VALUE "InternalName", VERSIONNAME
|
||||
VALUE "LegalCopyright", VERSIONCOPYRIGHT
|
||||
VALUE "OriginalFilename", VERSIONNAME
|
||||
VALUE "ProductName", VERSIONPRODUCTNAME
|
||||
VALUE "ProductVersion", VERSIONSTR
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
||||
#include <windows.h>
|
||||
#if defined WIN32 || defined _WIN32 || defined __WIN32__
|
||||
# include <winver.h>
|
||||
#else
|
||||
# include <ver.h>
|
||||
#endif
|
||||
#include "svnrev.h"
|
||||
|
||||
AppIcon ICON "../bin/pawn.ico"
|
||||
|
||||
/* Version information
|
||||
*
|
||||
* All strings MUST have an explicit \0. See the Windows SDK documentation
|
||||
* for details on version information and the VERSIONINFO structure.
|
||||
*/
|
||||
#define VERSION 3
|
||||
#define REVISION 2
|
||||
#define BUILD SVN_REV
|
||||
#define VERSIONSTR "3.2." SVN_REVSTR "\0"
|
||||
#if defined STAND_ALONE
|
||||
#define VERSIONNAME "pawncc.exe\0"
|
||||
#define VERSIONDESCRIPTION "Pawn Compiler\0"
|
||||
#define VERSIONPRODUCTNAME "pawncc\0"
|
||||
#else
|
||||
#define VERSIONNAME "libpawnc.dll\0"
|
||||
#define VERSIONDESCRIPTION "Pawn Compiler library\0"
|
||||
#define VERSIONPRODUCTNAME "libpawnc\0"
|
||||
#endif
|
||||
#define VERSIONCOMPANYNAME "ITB CompuPhase\0"
|
||||
#define VERSIONCOPYRIGHT "Copyright \251 1998-2006 ITB CompuPhase\0"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION VERSION, REVISION, BUILD, 0
|
||||
PRODUCTVERSION VERSION, REVISION, BUILD, 0
|
||||
FILEFLAGSMASK 0x0000003FL
|
||||
FILEFLAGS 0
|
||||
#if defined(WIN32)
|
||||
FILEOS VOS__WINDOWS32
|
||||
#else
|
||||
FILEOS VOS__WINDOWS16
|
||||
#endif
|
||||
FILETYPE VFT_DLL
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", VERSIONCOMPANYNAME
|
||||
VALUE "FileDescription", VERSIONDESCRIPTION
|
||||
VALUE "FileVersion", VERSIONSTR
|
||||
VALUE "InternalName", VERSIONNAME
|
||||
VALUE "LegalCopyright", VERSIONCOPYRIGHT
|
||||
VALUE "OriginalFilename", VERSIONNAME
|
||||
VALUE "ProductName", VERSIONPRODUCTNAME
|
||||
VALUE "ProductVersion", VERSIONSTR
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
||||
|
@ -1,2 +1,2 @@
|
||||
NAME PAWNCC
|
||||
DESCRIPTION 'Pawn compiler'
|
||||
NAME PAWNCC
|
||||
DESCRIPTION 'Pawn compiler'
|
||||
|
@ -1,5 +1,5 @@
|
||||
NAME PAWNCC
|
||||
DESCRIPTION 'Pawn compiler'
|
||||
|
||||
IMPORTS
|
||||
_pc_compile = pawnc.pc_compile
|
||||
NAME PAWNCC
|
||||
DESCRIPTION 'Pawn compiler'
|
||||
|
||||
IMPORTS
|
||||
_pc_compile = pawnc.pc_compile
|
||||
|
@ -1,342 +1,342 @@
|
||||
/* Pawn compiler - Error message strings (plain and compressed formats)
|
||||
*
|
||||
* Copyright (c) ITB CompuPhase, 2000-2006
|
||||
*
|
||||
* This software is provided "as-is", without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from
|
||||
* the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software in
|
||||
* a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*
|
||||
* Version: $Id: sc5.sch 3633 2006-08-11 16:20:18Z thiadmer $
|
||||
*/
|
||||
|
||||
SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned char pairtable[128][2]);
|
||||
|
||||
#define SCPACK_TABLE errstr_table
|
||||
/*-*SCPACK start of pair table, do not change or remove this line */
|
||||
unsigned char errstr_table[][2] = {
|
||||
{101,32}, {111,110}, {116,32}, {105,110}, {97,114}, {116,105}, {100,32}, {115,32}, {101,114}, {97,108}, {101,110}, {37,115}, {133,129}, {34,139}, {141,34}, {117,110},
|
||||
{114,101}, {110,111}, {115,105}, {121,32}, {97,116}, {111,114}, {97,110}, {32,142}, {109,98}, {115,116}, {41,10}, {100,101}, {109,138}, {101,134}, {98,108}, {140,32},
|
||||
{111,108}, {114,97}, {145,130}, {118,137}, {143,99}, {102,164}, {115,121}, {166,152}, {167,160}, {117,115}, {97,32}, {115,146}, {97,158}, {149,32}, {132,161}, {105,134},
|
||||
{103,32}, {163,175}, {103,117}, {178,156}, {136,32}, {132,179}, {131,177}, {111,102}, {116,104}, {101,120}, {105,135}, {165,159}, {101,100}, {99,104}, {118,132}, {168,151},
|
||||
{105,172}, {190,192}, {155,102}, {174,147}, {183,32}, {109,97}, {116,111}, {99,129}, {101,135}, {112,144}, {181,130}, {98,128}, {115,10}, {153,148}, {44,32}, {40,191},
|
||||
{169,130}, {151,10}, {101,10}, {207,154}, {109,208}, {116,97}, {194,131}, {193,128}, {34,32}, {129,32}, {105,99}, {132,97}, {100,105}, {146,122}, {110,32}, {137,32},
|
||||
{104,97}, {101,108}, {117,108}, {99,111}, {108,111}, {109,148}, {199,153}, {58,209}, {111,112}, {97,115}, {108,128}, {232,136}, {230,150}, {150,32}, {201,171}, {131,176},
|
||||
{212,203}, {102,105}, {119,105}, {185,238}, {109,112}, {116,136}, {165,140}, {197,147}, {102,149}, {111,32}, {131,32}, {213,176}, {110,117}, {115,117}, {118,128}
|
||||
};
|
||||
/*-*SCPACK end of pair table, do not change or remove this line */
|
||||
|
||||
static char *errmsg[] = {
|
||||
#ifdef SCPACK
|
||||
/*001*/ "expected token: \"%s\", but found \"%s\"\n",
|
||||
/*002*/ "only a single statement (or expression) can follow each \"case\"\n",
|
||||
/*003*/ "declaration of a local variable must appear in a compound block\n",
|
||||
/*004*/ "function \"%s\" is not implemented\n",
|
||||
/*005*/ "function may not have arguments\n",
|
||||
/*006*/ "must be assigned to an array\n",
|
||||
/*007*/ "operator cannot be redefined\n",
|
||||
/*008*/ "must be a constant expression; assumed zero\n",
|
||||
/*009*/ "invalid array size (negative, zero or out of bounds)\n",
|
||||
/*010*/ "invalid function or declaration\n",
|
||||
/*011*/ "invalid outside functions\n",
|
||||
/*012*/ "invalid function call, not a valid address\n",
|
||||
/*013*/ "no entry point (no public functions)\n",
|
||||
/*014*/ "invalid statement; not in switch\n",
|
||||
/*015*/ "\"default\" case must be the last case in switch statement\n",
|
||||
/*016*/ "multiple defaults in \"switch\"\n",
|
||||
/*017*/ "undefined symbol \"%s\"\n",
|
||||
/*018*/ "initialization data exceeds declared size\n",
|
||||
/*019*/ "not a label: \"%s\"\n",
|
||||
/*020*/ "invalid symbol name \"%s\"\n",
|
||||
/*021*/ "symbol already defined: \"%s\"\n",
|
||||
/*022*/ "must be lvalue (non-constant)\n",
|
||||
/*023*/ "array assignment must be simple assignment\n",
|
||||
/*024*/ "\"break\" or \"continue\" is out of context\n",
|
||||
/*025*/ "function heading differs from prototype\n",
|
||||
/*026*/ "no matching \"#if...\"\n",
|
||||
/*027*/ "invalid character constant\n",
|
||||
/*028*/ "invalid subscript (not an array or too many subscripts): \"%s\"\n",
|
||||
/*029*/ "invalid expression, assumed zero\n",
|
||||
/*030*/ "compound statement not closed at the end of file (started at line %d)\n",
|
||||
/*031*/ "unknown directive\n",
|
||||
/*032*/ "array index out of bounds (variable \"%s\")\n",
|
||||
/*033*/ "array must be indexed (variable \"%s\")\n",
|
||||
/*034*/ "argument does not have a default value (argument %d)\n",
|
||||
/*035*/ "argument type mismatch (argument %d)\n",
|
||||
/*036*/ "empty statement\n",
|
||||
/*037*/ "invalid string (possibly non-terminated string)\n",
|
||||
/*038*/ "extra characters on line\n",
|
||||
/*039*/ "constant symbol has no size\n",
|
||||
/*040*/ "duplicate \"case\" label (value %d)\n",
|
||||
/*041*/ "invalid ellipsis, array size is not known\n",
|
||||
/*042*/ "invalid combination of class specifiers\n",
|
||||
/*043*/ "character constant exceeds range for packed string\n",
|
||||
/*044*/ "positional parameters must precede all named parameters\n",
|
||||
/*045*/ "too many function arguments\n",
|
||||
/*046*/ "unknown array size (variable \"%s\")\n",
|
||||
/*047*/ "array sizes do not match, or destination array is too small\n",
|
||||
/*048*/ "array dimensions do not match\n",
|
||||
/*049*/ "invalid line continuation\n",
|
||||
/*050*/ "invalid range\n",
|
||||
/*051*/ "invalid subscript, use \"[ ]\" operators on major dimensions\n",
|
||||
/*052*/ "multi-dimensional arrays must be fully initialized\n",
|
||||
/*053*/ "exceeding maximum number of dimensions\n",
|
||||
/*054*/ "unmatched closing brace (\"}\")\n",
|
||||
/*055*/ "start of function body without function header\n",
|
||||
/*056*/ "arrays, local variables and function arguments cannot be public (variable \"%s\")\n",
|
||||
/*057*/ "unfinished expression before compiler directive\n",
|
||||
/*058*/ "duplicate argument; same argument is passed twice\n",
|
||||
/*059*/ "function argument may not have a default value (variable \"%s\")\n",
|
||||
/*060*/ "multiple \"#else\" directives between \"#if ... #endif\"\n",
|
||||
/*061*/ "\"#elseif\" directive follows an \"#else\" directive\n",
|
||||
/*062*/ "number of operands does not fit the operator\n",
|
||||
/*063*/ "function result tag of operator \"%s\" must be \"%s\"\n",
|
||||
/*064*/ "cannot change predefined operators\n",
|
||||
/*065*/ "function argument may only have a single tag (argument %d)\n",
|
||||
/*066*/ "function argument may not be a reference argument or an array (argument \"%s\")\n",
|
||||
/*067*/ "variable cannot be both a reference and an array (variable \"%s\")\n",
|
||||
/*068*/ "invalid rational number precision in #pragma\n",
|
||||
/*069*/ "rational number format already defined\n",
|
||||
/*070*/ "rational number support was not enabled\n",
|
||||
/*071*/ "user-defined operator must be declared before use (function \"%s\")\n",
|
||||
/*072*/ "\"sizeof\" operator is invalid on \"function\" symbols\n",
|
||||
/*073*/ "function argument must be an array (argument \"%s\")\n",
|
||||
/*074*/ "#define pattern must start with an alphabetic character\n",
|
||||
/*075*/ "input line too long (after substitutions)\n",
|
||||
/*076*/ "syntax error in the expression, or invalid function call\n",
|
||||
/*077*/ "malformed UTF-8 encoding, or corrupted file: %s\n",
|
||||
/*078*/ "function uses both \"return\" and \"return <value>\"\n",
|
||||
/*079*/ "inconsistent return types (array & non-array)\n",
|
||||
/*080*/ "unknown symbol, or not a constant symbol (symbol \"%s\")\n",
|
||||
/*081*/ "cannot take a tag as a default value for an indexed array parameter (symbol \"%s\")\n",
|
||||
/*082*/ "user-defined operators and native functions may not have states\n",
|
||||
/*083*/ "a function or variable may only belong to a single automaton (symbol \"%s\")\n",
|
||||
/*084*/ "state conflict: one of the states is already assigned to another implementation (symbol \"%s\")\n",
|
||||
/*085*/ "no states are defined for symbol \"%s\"\n",
|
||||
/*086*/ "unknown automaton \"%s\"\n",
|
||||
/*087*/ "unknown state \"%s\" for automaton \"%s\"\n",
|
||||
/*088*/ "public variables and local variables may not have states (symbol \"%s\")\n",
|
||||
/*089*/ "state variables may not be initialized (symbol \"%s\")\n",
|
||||
/*090*/ "public functions may not return arrays (symbol \"%s\")\n",
|
||||
/*091*/ "ambiguous constant; tag override is required (symbol \"%s\")\n"
|
||||
#else
|
||||
"\271pect\235\306k\212:\227\316bu\202fo\217\206\216\012",
|
||||
"\201l\223\252s\203g\352\315e\234\202(\255\363\201) c\355f\240\344w ea\275 \042c\351e\042\012",
|
||||
"\233cl\333\237\304\252\344c\337\327\324appe\204 \372\252\343\364o\217\206\236ock\012",
|
||||
"\366\227 \272\242i\364le\234t\274\012",
|
||||
"\273\367\242\340\376\265t\314",
|
||||
"\360a\253gn\235\306 \355\256y\012",
|
||||
"\353\224\255c\226\242\313\220\326\274\012",
|
||||
"\360\252\354\202\363\201; \351\375m\235z\210o\012",
|
||||
"\266\303\335\200(nega\205ve\316z\210\371\255ou\202\304bo\217ds\232",
|
||||
"\266\273\255\233cl\333\214\012",
|
||||
"\266out\222d\200\366\314",
|
||||
"\266\273c\211l\316\242\252\261add\220s\314",
|
||||
"\221 \212tr\223po\203\202(\221 pu\236\332 \366s\232",
|
||||
"\266\315e\234t; \242\372s\362t\275\012",
|
||||
"\042\302a\342t\330c\351\200\360\270\200l\351\202c\351\200\372s\362t\275 \315e\234t\012",
|
||||
"m\342\205p\352\302a\342t\207\372\042s\362t\275\042\012",
|
||||
"\217\326\235\277\012",
|
||||
"\203i\205\211iza\237d\224\252\271ce\274\207\233cl\204\235\335\322",
|
||||
"\242\252lab\341\347",
|
||||
"\266\250 nam\200\216\012",
|
||||
"\250 \211\220ad\223\326\274\347",
|
||||
"\360l\243u\200(n\201-\354t\232",
|
||||
"\303a\253gn\234\202\360\222\364\352a\253gn\234t\012",
|
||||
"\042b\220ak\330\255\042\307t\203ue\330\272ou\202\304\307t\271t\012",
|
||||
"\273head\357\334ff\210\207from pro\306typ\322",
|
||||
"\221 \345\275\357\042#if...\042\012",
|
||||
"\266\275\333ct\264\354t\012",
|
||||
"\266\375bscrip\202(\242\355\303\255\306\371m\226\223\375bscripts)\347",
|
||||
"\266\363\201\316\351\375m\235z\210o\012",
|
||||
"\343\364o\217\206\315e\234\202\242c\344s\235a\202\270\200\212\206\304\361\352(\231\204t\235a\202l\203\200%d\232",
|
||||
"\217k\221w\336\334\220c\205v\322",
|
||||
"\303\203\233x ou\202\304bo\217d\207(\327\216\232",
|
||||
"\303\360\203\233x\235(\327\216\232",
|
||||
"\312do\310\242\340\376\252\302a\342\202\243u\200(\312%d\232",
|
||||
"\312typ\200mis\345\275 (\312%d\232",
|
||||
"e\364t\223\315e\234t\012",
|
||||
"\266\231r\357(po\253\236\223n\201-\365m\203\224\235\231r\203g\232",
|
||||
"\271t\241 \275\333c\365\207\331l\203\322",
|
||||
"\354\202\250 \340\207\221 \335\322",
|
||||
"dupl\332\224\200\042c\351e\330lab\341 (\243u\200%d\232",
|
||||
"\266\341lip\222s\316\303\335\200\272\242k\221wn\012",
|
||||
"\266\343\230\203a\237\304cl\351\207speci\361\210\314",
|
||||
"\275\333ct\264\354\202\271ce\274\207r\226g\200f\255pack\235\231r\203g\012",
|
||||
"po\222\214\337p\333me\365\207\324\311c\274\200\211l nam\235p\333me\365\314",
|
||||
"\306\371m\226\223\273\265t\314",
|
||||
"\217k\221w\336\303\335\200(\327\216\232",
|
||||
"\303\335\310d\371\242\345\275\316\255\233\231\203a\237\303\272\306\371sm\211l\012",
|
||||
"\303\334\234\222\201\207d\371\242\345\275\012",
|
||||
"\266l\203\200\307t\203ua\214\012",
|
||||
"\266r\226g\322",
|
||||
"\266\375bscript\316\251\200\042[ ]\330\353\224\225\207\331\305j\255\334\234\222\201\314",
|
||||
"m\342\205-\334\234\222\201\337\256y\207\360f\342l\223\203i\205\211iz\274\012",
|
||||
"\271ce\274\357\305ximum \374\230\264\304\334\234\222\201\314",
|
||||
"\217\345\275\235c\344s\357b\241c\200(\042}\042\232",
|
||||
"\231\204\202\304\273bod\223\362\270ou\202\273head\210\012",
|
||||
"\256ys\316\344c\337\301\310\226\206\273\265t\207c\226\242\313pu\236\332 (\327\216\232",
|
||||
"\217f\203ish\235\363\331be\370\200\343\364il\264\334\220c\205v\322",
|
||||
"dupl\332\224\200\265t; sam\200\312\272p\351s\235tw\332\322",
|
||||
"\273\312\367\242\340\376\252\302a\342\202\243u\200(\327\216\232",
|
||||
"m\342\205p\352\042#\341se\330\334\220c\205v\310betwe\212 \042#if ... #\212\334f\042\012",
|
||||
"\042#\341seif\330\334\220c\205\376f\240\344w\207\355\042#\341se\330\334\220c\205v\322",
|
||||
"\374\230\264\304\353\226d\207do\310\242\361\202\270\200\353\224\225\012",
|
||||
"\273\220s\342\202\373\304\353\224\225\227 \360\216\012",
|
||||
"c\226\242\275\226g\200\311\326\235\353\224\225\314",
|
||||
"\273\312\367\201l\223\340\376\252s\203g\352\373(\312%d\232",
|
||||
"\273\312\367\242\313\252\220f\210\212c\200\312\255\355\303(\312\216\232",
|
||||
"\327c\226\242\313bo\270 \252\220f\210\212c\200\226\206\355\303(\327\216\232",
|
||||
"\266\241\214\337\374\230\264\311ci\222\331\372#p\241g\305\012",
|
||||
"\241\214\337\374\230\264\370\305\202\211\220ad\223\326\274\012",
|
||||
"\241\214\337\374\230\264\375pp\225\202wa\207\242\212\254\274\012",
|
||||
"\251\210-\326\235\353\224\255\360\233cl\204\235be\370\200\251\200(\366\227\232",
|
||||
"\042\335e\267\330\353\224\255\272\266\331\042\366\330\250\314",
|
||||
"\273\312\360\355\303(\312\216\232",
|
||||
"#\326\200p\224\365\336\324\231\204\202\362\270 \355\211p\340be\205c \275\333c\365\012",
|
||||
"\203pu\202l\203\200\306\371l\201\260(aft\264\375bs\205tu\214s\232",
|
||||
"\246n\325x \210r\255\372\270\200\363\201\316\255\266\273c\211l\012",
|
||||
"m\211\370m\235UTF-8 \212\343d\203g\316\255c\225rupt\235\361le: \213\012",
|
||||
"\273\251\310bo\270 \042\220turn\330\226\206\042\220tur\336<\243ue>\042\012",
|
||||
"\203\307\222\231\212\202\220tur\336typ\310(\303& n\201-\256y\232",
|
||||
"\217k\221w\336\250\316\255\242\252\354\202\250 \323",
|
||||
"c\226\242\325k\200\252\373a\207\252\302a\342\202\243u\200f\255\355\203\233x\235\303p\333met\264\323",
|
||||
"\251\210-\326\235\353\224\225\207\226\206na\205\376\366\207\367\242\340\376\315e\314",
|
||||
"\252\273\255\327\367\201l\223b\341\201\260\306 \252s\203g\352au\306\345\331\323",
|
||||
"\315\200\307fl\332t: \201\200\304\270\200\315\310\272\211\220ad\223a\253gn\235\306 a\221\270\264i\364le\234\325\237\323",
|
||||
"\221 \315\310\204\200\326\235f\255\277\012",
|
||||
"\217k\221w\336au\306\345\201\321",
|
||||
"\217k\221w\336\315\200\216 f\255au\306\345\201\321",
|
||||
"pu\236\332 \301\310\226\206\344c\337\301\310\367\242\340\376\315\310\323",
|
||||
"\315\200\301\310\367\242\313\203i\205\211iz\235\323",
|
||||
"pu\236\332 \366\207\367\242\220tur\336\256y\207\323",
|
||||
"a\230i\262ou\207\354t; \373ov\210rid\200\272\220qui\220\206\323"
|
||||
#endif
|
||||
};
|
||||
|
||||
static char *fatalmsg[] = {
|
||||
#ifdef SCPACK
|
||||
/*100*/ "cannot read from file: \"%s\"\n",
|
||||
/*101*/ "cannot write to file: \"%s\"\n",
|
||||
/*102*/ "table overflow: \"%s\"\n",
|
||||
/* table can be: loop table
|
||||
* literal table
|
||||
* staging buffer
|
||||
* option table (response file)
|
||||
* peephole optimizer table
|
||||
*/
|
||||
/*103*/ "insufficient memory\n",
|
||||
/*104*/ "invalid assembler instruction \"%s\"\n",
|
||||
/*105*/ "numeric overflow, exceeding capacity\n",
|
||||
/*106*/ "compiled script exceeds the maximum memory size (%ld bytes)\n",
|
||||
/*107*/ "too many error messages on one line\n",
|
||||
/*108*/ "codepage mapping file not found\n",
|
||||
/*109*/ "invalid path: \"%s\"\n",
|
||||
/*110*/ "assertion failed: %s\n",
|
||||
/*111*/ "user error: %s\n",
|
||||
#else
|
||||
"c\226\242\220a\206from \361le\347",
|
||||
"c\226\242writ\200\306 \361le\347",
|
||||
"t\254\200ov\210f\344w\347",
|
||||
"\203\375ff\332i\212\202mem\225y\012",
|
||||
"\266\351se\230l\264\203\231ruc\214\321",
|
||||
"\374m\210\332 ov\210f\344w\316\271ce\274\357capacity\012",
|
||||
"\343\364il\235scrip\202\271ce\274\207\270\200\305ximum mem\225\223\335\200(%l\206bytes\232",
|
||||
"\306\371m\226\223\210r\255messag\310\331\201\200l\203\322",
|
||||
"\343\233pag\200\305pp\357\361\352\242fo\217d\012",
|
||||
"\266p\224h\347",
|
||||
"\351s\210\237fail\274: \213\012",
|
||||
"\251\264\210r\225: \213\012"
|
||||
#endif
|
||||
};
|
||||
|
||||
static char *warnmsg[] = {
|
||||
#ifdef SCPACK
|
||||
/*200*/ "symbol \"%s\" is truncated to %d characters\n",
|
||||
/*201*/ "redefinition of constant/macro (symbol \"%s\")\n",
|
||||
/*202*/ "number of arguments does not match definition\n",
|
||||
/*203*/ "symbol is never used: \"%s\"\n",
|
||||
/*204*/ "symbol is assigned a value that is never used: \"%s\"\n",
|
||||
/*205*/ "redundant code: constant expression is zero\n",
|
||||
/*206*/ "redundant test: constant expression is non-zero\n",
|
||||
/*207*/ "unknown #pragma\n",
|
||||
/*208*/ "function with tag result used before definition, forcing reparse\n",
|
||||
/*209*/ "function \"%s\" should return a value\n",
|
||||
/*210*/ "possible use of symbol before initialization: \"%s\"\n",
|
||||
/*211*/ "possibly unintended assignment\n",
|
||||
/*212*/ "possibly unintended bitwise operation\n",
|
||||
/*213*/ "tag mismatch\n",
|
||||
/*214*/ "possibly a \"const\" array argument was intended: \"%s\"\n",
|
||||
/*215*/ "expression has no effect\n",
|
||||
/*216*/ "nested comment\n",
|
||||
/*217*/ "loose indentation\n",
|
||||
/*218*/ "old style prototypes used with optional semicolumns\n",
|
||||
/*219*/ "local variable \"%s\" shadows a variable at a preceding level\n",
|
||||
/*220*/ "expression with tag override must appear between parentheses\n",
|
||||
/*221*/ "label name \"%s\" shadows tag name\n",
|
||||
/*222*/ "number of digits exceeds rational number precision\n",
|
||||
/*223*/ "redundant \"sizeof\": argument size is always 1 (symbol \"%s\")\n",
|
||||
/*224*/ "indeterminate array size in \"sizeof\" expression (symbol \"%s\")\n",
|
||||
/*225*/ "unreachable code\n",
|
||||
/*226*/ "a variable is assigned to itself (symbol \"%s\")\n",
|
||||
/*227*/ "more initiallers than enum fields\n",
|
||||
/*228*/ "length of initialler exceeds size of the enum field\n",
|
||||
/*229*/ "index tag mismatch (symbol \"%s\")\n",
|
||||
/*230*/ "no implementation for state \"%s\" in function \"%s\", no fall-back\n",
|
||||
/*231*/ "state specification on forward declaration is ignored\n",
|
||||
/*232*/ "output file is written, but with compact encoding disabled\n",
|
||||
/*233*/ "state variable \"%s\" shadows a global variable\n",
|
||||
/*234*/ "function is deprecated (symbol \"%s\") %s\n",
|
||||
/*235*/ "public function lacks forward declaration (symbol \"%s\")\n",
|
||||
/*236*/ "unknown parameter in substitution (incorrect #define pattern)\n"
|
||||
#else
|
||||
"\277 \272tr\244\224\235\306 %\206\275\333c\365\314",
|
||||
"\220\326i\237\304\354t/\305cr\371\323",
|
||||
"\374\230\264\304\265t\207do\310\242\345\275 \326i\214\012",
|
||||
"\250 \272nev\264\251\274\347",
|
||||
"\250 \272a\253gn\235\252\243u\200\270a\202\272nev\264\251\274\347",
|
||||
"\220d\217d\226\202\343\233: \354\202\363\331\272z\210o\012",
|
||||
"\220d\217d\226\202te\231: \354\202\363\331\272n\201-z\210o\012",
|
||||
"\217k\221w\336#p\241g\305\012",
|
||||
"\273\362\270 \373\220s\342\202\251\235be\370\200\326i\214\316\370c\357\220p\204s\322",
|
||||
"\366\227 sho\342\206\220tur\336\252\243u\322",
|
||||
"po\253\236\200\251\200\304\250 be\370\200\203i\205\211iza\214\347",
|
||||
"po\253\236\223\217\203t\212\233\206a\253gn\234t\012",
|
||||
"po\253\236\223\217\203t\212\233\206bit\362s\200\353a\214\012",
|
||||
"\373mis\345\275\012",
|
||||
"po\253\236\223\252\042\346\330\303\312wa\207\203t\212\233d\347",
|
||||
"\363\331\340\207\221 effect\012",
|
||||
"ne\231\235\343m\234t\012",
|
||||
"\344os\200\203d\212\325\214\012",
|
||||
"\240\206\231y\352pro\306typ\310\251\235\362\270 \350\214\337sem\332\240umn\314",
|
||||
"\344c\337\327\216 s\340dow\207\252\327a\202\252\311c\274\357lev\341\012",
|
||||
"\363\331\362\270 \373ov\210rid\200\324appe\204 betwe\212 p\204\212\270ese\314",
|
||||
"lab\341 nam\200\216 s\340dow\207\373nam\322",
|
||||
"\374\230\264\304\334git\207\271ce\274\207\241\214\337\374\230\264\311ci\222\201\012",
|
||||
"\220d\217d\226\202\042\335e\267\042: \312\335\200\272\211way\2071 \323",
|
||||
"\203\233\365m\203\224\200\303\335\200\372\042\335e\267\330\363\331\323",
|
||||
"\217\220a\275\254\200\343\233\012",
|
||||
"\252\327\272a\253gn\235\306 its\341f \323",
|
||||
"m\225\200\203i\205\211l\210\207\270\355\212um \361\341d\314",
|
||||
"l\212g\270 \304\203i\205\211l\264\271ce\274\207\335\200\304\270\200\212um \361\341d\012",
|
||||
"\203\233x \373mis\345\275 \323",
|
||||
"\221 i\364le\234\325\237f\255\315\200\216 \372\366\227\316\221 f\211l-back\012",
|
||||
"\315\200specif\332a\237\331\370w\204\206\233cl\333\237\272ig\221\220d\012",
|
||||
"outpu\202\361\352\272writt\212\316bu\202\362\270 \343\364ac\202\212\343d\357\334s\254\274\012",
|
||||
"\315\200\327\216 s\340dow\207\252g\344b\337\301\322",
|
||||
"\273\272\233\311c\224\235\317) \213\012",
|
||||
"pu\236\332 \273lack\207\370w\204\206\233cl\333\237\323",
|
||||
"\217k\221w\336p\333met\264\372\375bs\205tu\237(\203c\225\220c\202#\326\200p\224\365n\232"
|
||||
#endif
|
||||
};
|
||||
/* Pawn compiler - Error message strings (plain and compressed formats)
|
||||
*
|
||||
* Copyright (c) ITB CompuPhase, 2000-2006
|
||||
*
|
||||
* This software is provided "as-is", without any express or implied warranty.
|
||||
* In no event will the authors be held liable for any damages arising from
|
||||
* the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software in
|
||||
* a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*
|
||||
* Version: $Id: sc5.sch 3633 2006-08-11 16:20:18Z thiadmer $
|
||||
*/
|
||||
|
||||
SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned char pairtable[128][2]);
|
||||
|
||||
#define SCPACK_TABLE errstr_table
|
||||
/*-*SCPACK start of pair table, do not change or remove this line */
|
||||
unsigned char errstr_table[][2] = {
|
||||
{101,32}, {111,110}, {116,32}, {105,110}, {97,114}, {116,105}, {100,32}, {115,32}, {101,114}, {97,108}, {101,110}, {37,115}, {133,129}, {34,139}, {141,34}, {117,110},
|
||||
{114,101}, {110,111}, {115,105}, {121,32}, {97,116}, {111,114}, {97,110}, {32,142}, {109,98}, {115,116}, {41,10}, {100,101}, {109,138}, {101,134}, {98,108}, {140,32},
|
||||
{111,108}, {114,97}, {145,130}, {118,137}, {143,99}, {102,164}, {115,121}, {166,152}, {167,160}, {117,115}, {97,32}, {115,146}, {97,158}, {149,32}, {132,161}, {105,134},
|
||||
{103,32}, {163,175}, {103,117}, {178,156}, {136,32}, {132,179}, {131,177}, {111,102}, {116,104}, {101,120}, {105,135}, {165,159}, {101,100}, {99,104}, {118,132}, {168,151},
|
||||
{105,172}, {190,192}, {155,102}, {174,147}, {183,32}, {109,97}, {116,111}, {99,129}, {101,135}, {112,144}, {181,130}, {98,128}, {115,10}, {153,148}, {44,32}, {40,191},
|
||||
{169,130}, {151,10}, {101,10}, {207,154}, {109,208}, {116,97}, {194,131}, {193,128}, {34,32}, {129,32}, {105,99}, {132,97}, {100,105}, {146,122}, {110,32}, {137,32},
|
||||
{104,97}, {101,108}, {117,108}, {99,111}, {108,111}, {109,148}, {199,153}, {58,209}, {111,112}, {97,115}, {108,128}, {232,136}, {230,150}, {150,32}, {201,171}, {131,176},
|
||||
{212,203}, {102,105}, {119,105}, {185,238}, {109,112}, {116,136}, {165,140}, {197,147}, {102,149}, {111,32}, {131,32}, {213,176}, {110,117}, {115,117}, {118,128}
|
||||
};
|
||||
/*-*SCPACK end of pair table, do not change or remove this line */
|
||||
|
||||
static char *errmsg[] = {
|
||||
#ifdef SCPACK
|
||||
/*001*/ "expected token: \"%s\", but found \"%s\"\n",
|
||||
/*002*/ "only a single statement (or expression) can follow each \"case\"\n",
|
||||
/*003*/ "declaration of a local variable must appear in a compound block\n",
|
||||
/*004*/ "function \"%s\" is not implemented\n",
|
||||
/*005*/ "function may not have arguments\n",
|
||||
/*006*/ "must be assigned to an array\n",
|
||||
/*007*/ "operator cannot be redefined\n",
|
||||
/*008*/ "must be a constant expression; assumed zero\n",
|
||||
/*009*/ "invalid array size (negative, zero or out of bounds)\n",
|
||||
/*010*/ "invalid function or declaration\n",
|
||||
/*011*/ "invalid outside functions\n",
|
||||
/*012*/ "invalid function call, not a valid address\n",
|
||||
/*013*/ "no entry point (no public functions)\n",
|
||||
/*014*/ "invalid statement; not in switch\n",
|
||||
/*015*/ "\"default\" case must be the last case in switch statement\n",
|
||||
/*016*/ "multiple defaults in \"switch\"\n",
|
||||
/*017*/ "undefined symbol \"%s\"\n",
|
||||
/*018*/ "initialization data exceeds declared size\n",
|
||||
/*019*/ "not a label: \"%s\"\n",
|
||||
/*020*/ "invalid symbol name \"%s\"\n",
|
||||
/*021*/ "symbol already defined: \"%s\"\n",
|
||||
/*022*/ "must be lvalue (non-constant)\n",
|
||||
/*023*/ "array assignment must be simple assignment\n",
|
||||
/*024*/ "\"break\" or \"continue\" is out of context\n",
|
||||
/*025*/ "function heading differs from prototype\n",
|
||||
/*026*/ "no matching \"#if...\"\n",
|
||||
/*027*/ "invalid character constant\n",
|
||||
/*028*/ "invalid subscript (not an array or too many subscripts): \"%s\"\n",
|
||||
/*029*/ "invalid expression, assumed zero\n",
|
||||
/*030*/ "compound statement not closed at the end of file (started at line %d)\n",
|
||||
/*031*/ "unknown directive\n",
|
||||
/*032*/ "array index out of bounds (variable \"%s\")\n",
|
||||
/*033*/ "array must be indexed (variable \"%s\")\n",
|
||||
/*034*/ "argument does not have a default value (argument %d)\n",
|
||||
/*035*/ "argument type mismatch (argument %d)\n",
|
||||
/*036*/ "empty statement\n",
|
||||
/*037*/ "invalid string (possibly non-terminated string)\n",
|
||||
/*038*/ "extra characters on line\n",
|
||||
/*039*/ "constant symbol has no size\n",
|
||||
/*040*/ "duplicate \"case\" label (value %d)\n",
|
||||
/*041*/ "invalid ellipsis, array size is not known\n",
|
||||
/*042*/ "invalid combination of class specifiers\n",
|
||||
/*043*/ "character constant exceeds range for packed string\n",
|
||||
/*044*/ "positional parameters must precede all named parameters\n",
|
||||
/*045*/ "too many function arguments\n",
|
||||
/*046*/ "unknown array size (variable \"%s\")\n",
|
||||
/*047*/ "array sizes do not match, or destination array is too small\n",
|
||||
/*048*/ "array dimensions do not match\n",
|
||||
/*049*/ "invalid line continuation\n",
|
||||
/*050*/ "invalid range\n",
|
||||
/*051*/ "invalid subscript, use \"[ ]\" operators on major dimensions\n",
|
||||
/*052*/ "multi-dimensional arrays must be fully initialized\n",
|
||||
/*053*/ "exceeding maximum number of dimensions\n",
|
||||
/*054*/ "unmatched closing brace (\"}\")\n",
|
||||
/*055*/ "start of function body without function header\n",
|
||||
/*056*/ "arrays, local variables and function arguments cannot be public (variable \"%s\")\n",
|
||||
/*057*/ "unfinished expression before compiler directive\n",
|
||||
/*058*/ "duplicate argument; same argument is passed twice\n",
|
||||
/*059*/ "function argument may not have a default value (variable \"%s\")\n",
|
||||
/*060*/ "multiple \"#else\" directives between \"#if ... #endif\"\n",
|
||||
/*061*/ "\"#elseif\" directive follows an \"#else\" directive\n",
|
||||
/*062*/ "number of operands does not fit the operator\n",
|
||||
/*063*/ "function result tag of operator \"%s\" must be \"%s\"\n",
|
||||
/*064*/ "cannot change predefined operators\n",
|
||||
/*065*/ "function argument may only have a single tag (argument %d)\n",
|
||||
/*066*/ "function argument may not be a reference argument or an array (argument \"%s\")\n",
|
||||
/*067*/ "variable cannot be both a reference and an array (variable \"%s\")\n",
|
||||
/*068*/ "invalid rational number precision in #pragma\n",
|
||||
/*069*/ "rational number format already defined\n",
|
||||
/*070*/ "rational number support was not enabled\n",
|
||||
/*071*/ "user-defined operator must be declared before use (function \"%s\")\n",
|
||||
/*072*/ "\"sizeof\" operator is invalid on \"function\" symbols\n",
|
||||
/*073*/ "function argument must be an array (argument \"%s\")\n",
|
||||
/*074*/ "#define pattern must start with an alphabetic character\n",
|
||||
/*075*/ "input line too long (after substitutions)\n",
|
||||
/*076*/ "syntax error in the expression, or invalid function call\n",
|
||||
/*077*/ "malformed UTF-8 encoding, or corrupted file: %s\n",
|
||||
/*078*/ "function uses both \"return\" and \"return <value>\"\n",
|
||||
/*079*/ "inconsistent return types (array & non-array)\n",
|
||||
/*080*/ "unknown symbol, or not a constant symbol (symbol \"%s\")\n",
|
||||
/*081*/ "cannot take a tag as a default value for an indexed array parameter (symbol \"%s\")\n",
|
||||
/*082*/ "user-defined operators and native functions may not have states\n",
|
||||
/*083*/ "a function or variable may only belong to a single automaton (symbol \"%s\")\n",
|
||||
/*084*/ "state conflict: one of the states is already assigned to another implementation (symbol \"%s\")\n",
|
||||
/*085*/ "no states are defined for symbol \"%s\"\n",
|
||||
/*086*/ "unknown automaton \"%s\"\n",
|
||||
/*087*/ "unknown state \"%s\" for automaton \"%s\"\n",
|
||||
/*088*/ "public variables and local variables may not have states (symbol \"%s\")\n",
|
||||
/*089*/ "state variables may not be initialized (symbol \"%s\")\n",
|
||||
/*090*/ "public functions may not return arrays (symbol \"%s\")\n",
|
||||
/*091*/ "ambiguous constant; tag override is required (symbol \"%s\")\n"
|
||||
#else
|
||||
"\271pect\235\306k\212:\227\316bu\202fo\217\206\216\012",
|
||||
"\201l\223\252s\203g\352\315e\234\202(\255\363\201) c\355f\240\344w ea\275 \042c\351e\042\012",
|
||||
"\233cl\333\237\304\252\344c\337\327\324appe\204 \372\252\343\364o\217\206\236ock\012",
|
||||
"\366\227 \272\242i\364le\234t\274\012",
|
||||
"\273\367\242\340\376\265t\314",
|
||||
"\360a\253gn\235\306 \355\256y\012",
|
||||
"\353\224\255c\226\242\313\220\326\274\012",
|
||||
"\360\252\354\202\363\201; \351\375m\235z\210o\012",
|
||||
"\266\303\335\200(nega\205ve\316z\210\371\255ou\202\304bo\217ds\232",
|
||||
"\266\273\255\233cl\333\214\012",
|
||||
"\266out\222d\200\366\314",
|
||||
"\266\273c\211l\316\242\252\261add\220s\314",
|
||||
"\221 \212tr\223po\203\202(\221 pu\236\332 \366s\232",
|
||||
"\266\315e\234t; \242\372s\362t\275\012",
|
||||
"\042\302a\342t\330c\351\200\360\270\200l\351\202c\351\200\372s\362t\275 \315e\234t\012",
|
||||
"m\342\205p\352\302a\342t\207\372\042s\362t\275\042\012",
|
||||
"\217\326\235\277\012",
|
||||
"\203i\205\211iza\237d\224\252\271ce\274\207\233cl\204\235\335\322",
|
||||
"\242\252lab\341\347",
|
||||
"\266\250 nam\200\216\012",
|
||||
"\250 \211\220ad\223\326\274\347",
|
||||
"\360l\243u\200(n\201-\354t\232",
|
||||
"\303a\253gn\234\202\360\222\364\352a\253gn\234t\012",
|
||||
"\042b\220ak\330\255\042\307t\203ue\330\272ou\202\304\307t\271t\012",
|
||||
"\273head\357\334ff\210\207from pro\306typ\322",
|
||||
"\221 \345\275\357\042#if...\042\012",
|
||||
"\266\275\333ct\264\354t\012",
|
||||
"\266\375bscrip\202(\242\355\303\255\306\371m\226\223\375bscripts)\347",
|
||||
"\266\363\201\316\351\375m\235z\210o\012",
|
||||
"\343\364o\217\206\315e\234\202\242c\344s\235a\202\270\200\212\206\304\361\352(\231\204t\235a\202l\203\200%d\232",
|
||||
"\217k\221w\336\334\220c\205v\322",
|
||||
"\303\203\233x ou\202\304bo\217d\207(\327\216\232",
|
||||
"\303\360\203\233x\235(\327\216\232",
|
||||
"\312do\310\242\340\376\252\302a\342\202\243u\200(\312%d\232",
|
||||
"\312typ\200mis\345\275 (\312%d\232",
|
||||
"e\364t\223\315e\234t\012",
|
||||
"\266\231r\357(po\253\236\223n\201-\365m\203\224\235\231r\203g\232",
|
||||
"\271t\241 \275\333c\365\207\331l\203\322",
|
||||
"\354\202\250 \340\207\221 \335\322",
|
||||
"dupl\332\224\200\042c\351e\330lab\341 (\243u\200%d\232",
|
||||
"\266\341lip\222s\316\303\335\200\272\242k\221wn\012",
|
||||
"\266\343\230\203a\237\304cl\351\207speci\361\210\314",
|
||||
"\275\333ct\264\354\202\271ce\274\207r\226g\200f\255pack\235\231r\203g\012",
|
||||
"po\222\214\337p\333me\365\207\324\311c\274\200\211l nam\235p\333me\365\314",
|
||||
"\306\371m\226\223\273\265t\314",
|
||||
"\217k\221w\336\303\335\200(\327\216\232",
|
||||
"\303\335\310d\371\242\345\275\316\255\233\231\203a\237\303\272\306\371sm\211l\012",
|
||||
"\303\334\234\222\201\207d\371\242\345\275\012",
|
||||
"\266l\203\200\307t\203ua\214\012",
|
||||
"\266r\226g\322",
|
||||
"\266\375bscript\316\251\200\042[ ]\330\353\224\225\207\331\305j\255\334\234\222\201\314",
|
||||
"m\342\205-\334\234\222\201\337\256y\207\360f\342l\223\203i\205\211iz\274\012",
|
||||
"\271ce\274\357\305ximum \374\230\264\304\334\234\222\201\314",
|
||||
"\217\345\275\235c\344s\357b\241c\200(\042}\042\232",
|
||||
"\231\204\202\304\273bod\223\362\270ou\202\273head\210\012",
|
||||
"\256ys\316\344c\337\301\310\226\206\273\265t\207c\226\242\313pu\236\332 (\327\216\232",
|
||||
"\217f\203ish\235\363\331be\370\200\343\364il\264\334\220c\205v\322",
|
||||
"dupl\332\224\200\265t; sam\200\312\272p\351s\235tw\332\322",
|
||||
"\273\312\367\242\340\376\252\302a\342\202\243u\200(\327\216\232",
|
||||
"m\342\205p\352\042#\341se\330\334\220c\205v\310betwe\212 \042#if ... #\212\334f\042\012",
|
||||
"\042#\341seif\330\334\220c\205\376f\240\344w\207\355\042#\341se\330\334\220c\205v\322",
|
||||
"\374\230\264\304\353\226d\207do\310\242\361\202\270\200\353\224\225\012",
|
||||
"\273\220s\342\202\373\304\353\224\225\227 \360\216\012",
|
||||
"c\226\242\275\226g\200\311\326\235\353\224\225\314",
|
||||
"\273\312\367\201l\223\340\376\252s\203g\352\373(\312%d\232",
|
||||
"\273\312\367\242\313\252\220f\210\212c\200\312\255\355\303(\312\216\232",
|
||||
"\327c\226\242\313bo\270 \252\220f\210\212c\200\226\206\355\303(\327\216\232",
|
||||
"\266\241\214\337\374\230\264\311ci\222\331\372#p\241g\305\012",
|
||||
"\241\214\337\374\230\264\370\305\202\211\220ad\223\326\274\012",
|
||||
"\241\214\337\374\230\264\375pp\225\202wa\207\242\212\254\274\012",
|
||||
"\251\210-\326\235\353\224\255\360\233cl\204\235be\370\200\251\200(\366\227\232",
|
||||
"\042\335e\267\330\353\224\255\272\266\331\042\366\330\250\314",
|
||||
"\273\312\360\355\303(\312\216\232",
|
||||
"#\326\200p\224\365\336\324\231\204\202\362\270 \355\211p\340be\205c \275\333c\365\012",
|
||||
"\203pu\202l\203\200\306\371l\201\260(aft\264\375bs\205tu\214s\232",
|
||||
"\246n\325x \210r\255\372\270\200\363\201\316\255\266\273c\211l\012",
|
||||
"m\211\370m\235UTF-8 \212\343d\203g\316\255c\225rupt\235\361le: \213\012",
|
||||
"\273\251\310bo\270 \042\220turn\330\226\206\042\220tur\336<\243ue>\042\012",
|
||||
"\203\307\222\231\212\202\220tur\336typ\310(\303& n\201-\256y\232",
|
||||
"\217k\221w\336\250\316\255\242\252\354\202\250 \323",
|
||||
"c\226\242\325k\200\252\373a\207\252\302a\342\202\243u\200f\255\355\203\233x\235\303p\333met\264\323",
|
||||
"\251\210-\326\235\353\224\225\207\226\206na\205\376\366\207\367\242\340\376\315e\314",
|
||||
"\252\273\255\327\367\201l\223b\341\201\260\306 \252s\203g\352au\306\345\331\323",
|
||||
"\315\200\307fl\332t: \201\200\304\270\200\315\310\272\211\220ad\223a\253gn\235\306 a\221\270\264i\364le\234\325\237\323",
|
||||
"\221 \315\310\204\200\326\235f\255\277\012",
|
||||
"\217k\221w\336au\306\345\201\321",
|
||||
"\217k\221w\336\315\200\216 f\255au\306\345\201\321",
|
||||
"pu\236\332 \301\310\226\206\344c\337\301\310\367\242\340\376\315\310\323",
|
||||
"\315\200\301\310\367\242\313\203i\205\211iz\235\323",
|
||||
"pu\236\332 \366\207\367\242\220tur\336\256y\207\323",
|
||||
"a\230i\262ou\207\354t; \373ov\210rid\200\272\220qui\220\206\323"
|
||||
#endif
|
||||
};
|
||||
|
||||
static char *fatalmsg[] = {
|
||||
#ifdef SCPACK
|
||||
/*100*/ "cannot read from file: \"%s\"\n",
|
||||
/*101*/ "cannot write to file: \"%s\"\n",
|
||||
/*102*/ "table overflow: \"%s\"\n",
|
||||
/* table can be: loop table
|
||||
* literal table
|
||||
* staging buffer
|
||||
* option table (response file)
|
||||
* peephole optimizer table
|
||||
*/
|
||||
/*103*/ "insufficient memory\n",
|
||||
/*104*/ "invalid assembler instruction \"%s\"\n",
|
||||
/*105*/ "numeric overflow, exceeding capacity\n",
|
||||
/*106*/ "compiled script exceeds the maximum memory size (%ld bytes)\n",
|
||||
/*107*/ "too many error messages on one line\n",
|
||||
/*108*/ "codepage mapping file not found\n",
|
||||
/*109*/ "invalid path: \"%s\"\n",
|
||||
/*110*/ "assertion failed: %s\n",
|
||||
/*111*/ "user error: %s\n",
|
||||
#else
|
||||
"c\226\242\220a\206from \361le\347",
|
||||
"c\226\242writ\200\306 \361le\347",
|
||||
"t\254\200ov\210f\344w\347",
|
||||
"\203\375ff\332i\212\202mem\225y\012",
|
||||
"\266\351se\230l\264\203\231ruc\214\321",
|
||||
"\374m\210\332 ov\210f\344w\316\271ce\274\357capacity\012",
|
||||
"\343\364il\235scrip\202\271ce\274\207\270\200\305ximum mem\225\223\335\200(%l\206bytes\232",
|
||||
"\306\371m\226\223\210r\255messag\310\331\201\200l\203\322",
|
||||
"\343\233pag\200\305pp\357\361\352\242fo\217d\012",
|
||||
"\266p\224h\347",
|
||||
"\351s\210\237fail\274: \213\012",
|
||||
"\251\264\210r\225: \213\012"
|
||||
#endif
|
||||
};
|
||||
|
||||
static char *warnmsg[] = {
|
||||
#ifdef SCPACK
|
||||
/*200*/ "symbol \"%s\" is truncated to %d characters\n",
|
||||
/*201*/ "redefinition of constant/macro (symbol \"%s\")\n",
|
||||
/*202*/ "number of arguments does not match definition\n",
|
||||
/*203*/ "symbol is never used: \"%s\"\n",
|
||||
/*204*/ "symbol is assigned a value that is never used: \"%s\"\n",
|
||||
/*205*/ "redundant code: constant expression is zero\n",
|
||||
/*206*/ "redundant test: constant expression is non-zero\n",
|
||||
/*207*/ "unknown #pragma\n",
|
||||
/*208*/ "function with tag result used before definition, forcing reparse\n",
|
||||
/*209*/ "function \"%s\" should return a value\n",
|
||||
/*210*/ "possible use of symbol before initialization: \"%s\"\n",
|
||||
/*211*/ "possibly unintended assignment\n",
|
||||
/*212*/ "possibly unintended bitwise operation\n",
|
||||
/*213*/ "tag mismatch\n",
|
||||
/*214*/ "possibly a \"const\" array argument was intended: \"%s\"\n",
|
||||
/*215*/ "expression has no effect\n",
|
||||
/*216*/ "nested comment\n",
|
||||
/*217*/ "loose indentation\n",
|
||||
/*218*/ "old style prototypes used with optional semicolumns\n",
|
||||
/*219*/ "local variable \"%s\" shadows a variable at a preceding level\n",
|
||||
/*220*/ "expression with tag override must appear between parentheses\n",
|
||||
/*221*/ "label name \"%s\" shadows tag name\n",
|
||||
/*222*/ "number of digits exceeds rational number precision\n",
|
||||
/*223*/ "redundant \"sizeof\": argument size is always 1 (symbol \"%s\")\n",
|
||||
/*224*/ "indeterminate array size in \"sizeof\" expression (symbol \"%s\")\n",
|
||||
/*225*/ "unreachable code\n",
|
||||
/*226*/ "a variable is assigned to itself (symbol \"%s\")\n",
|
||||
/*227*/ "more initiallers than enum fields\n",
|
||||
/*228*/ "length of initialler exceeds size of the enum field\n",
|
||||
/*229*/ "index tag mismatch (symbol \"%s\")\n",
|
||||
/*230*/ "no implementation for state \"%s\" in function \"%s\", no fall-back\n",
|
||||
/*231*/ "state specification on forward declaration is ignored\n",
|
||||
/*232*/ "output file is written, but with compact encoding disabled\n",
|
||||
/*233*/ "state variable \"%s\" shadows a global variable\n",
|
||||
/*234*/ "function is deprecated (symbol \"%s\") %s\n",
|
||||
/*235*/ "public function lacks forward declaration (symbol \"%s\")\n",
|
||||
/*236*/ "unknown parameter in substitution (incorrect #define pattern)\n"
|
||||
#else
|
||||
"\277 \272tr\244\224\235\306 %\206\275\333c\365\314",
|
||||
"\220\326i\237\304\354t/\305cr\371\323",
|
||||
"\374\230\264\304\265t\207do\310\242\345\275 \326i\214\012",
|
||||
"\250 \272nev\264\251\274\347",
|
||||
"\250 \272a\253gn\235\252\243u\200\270a\202\272nev\264\251\274\347",
|
||||
"\220d\217d\226\202\343\233: \354\202\363\331\272z\210o\012",
|
||||
"\220d\217d\226\202te\231: \354\202\363\331\272n\201-z\210o\012",
|
||||
"\217k\221w\336#p\241g\305\012",
|
||||
"\273\362\270 \373\220s\342\202\251\235be\370\200\326i\214\316\370c\357\220p\204s\322",
|
||||
"\366\227 sho\342\206\220tur\336\252\243u\322",
|
||||
"po\253\236\200\251\200\304\250 be\370\200\203i\205\211iza\214\347",
|
||||
"po\253\236\223\217\203t\212\233\206a\253gn\234t\012",
|
||||
"po\253\236\223\217\203t\212\233\206bit\362s\200\353a\214\012",
|
||||
"\373mis\345\275\012",
|
||||
"po\253\236\223\252\042\346\330\303\312wa\207\203t\212\233d\347",
|
||||
"\363\331\340\207\221 effect\012",
|
||||
"ne\231\235\343m\234t\012",
|
||||
"\344os\200\203d\212\325\214\012",
|
||||
"\240\206\231y\352pro\306typ\310\251\235\362\270 \350\214\337sem\332\240umn\314",
|
||||
"\344c\337\327\216 s\340dow\207\252\327a\202\252\311c\274\357lev\341\012",
|
||||
"\363\331\362\270 \373ov\210rid\200\324appe\204 betwe\212 p\204\212\270ese\314",
|
||||
"lab\341 nam\200\216 s\340dow\207\373nam\322",
|
||||
"\374\230\264\304\334git\207\271ce\274\207\241\214\337\374\230\264\311ci\222\201\012",
|
||||
"\220d\217d\226\202\042\335e\267\042: \312\335\200\272\211way\2071 \323",
|
||||
"\203\233\365m\203\224\200\303\335\200\372\042\335e\267\330\363\331\323",
|
||||
"\217\220a\275\254\200\343\233\012",
|
||||
"\252\327\272a\253gn\235\306 its\341f \323",
|
||||
"m\225\200\203i\205\211l\210\207\270\355\212um \361\341d\314",
|
||||
"l\212g\270 \304\203i\205\211l\264\271ce\274\207\335\200\304\270\200\212um \361\341d\012",
|
||||
"\203\233x \373mis\345\275 \323",
|
||||
"\221 i\364le\234\325\237f\255\315\200\216 \372\366\227\316\221 f\211l-back\012",
|
||||
"\315\200specif\332a\237\331\370w\204\206\233cl\333\237\272ig\221\220d\012",
|
||||
"outpu\202\361\352\272writt\212\316bu\202\362\270 \343\364ac\202\212\343d\357\334s\254\274\012",
|
||||
"\315\200\327\216 s\340dow\207\252g\344b\337\301\322",
|
||||
"\273\272\233\311c\224\235\317) \213\012",
|
||||
"pu\236\332 \273lack\207\370w\204\206\233cl\333\237\323",
|
||||
"\217k\221w\336p\333met\264\372\375bs\205tu\237(\203c\225\220c\202#\326\200p\224\365n\232"
|
||||
#endif
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user