===== Installation ===== //Under Construction// ==== Download ==== [[download|Downloads]] ==== Environment Variables ==== Running W requires two mandatory and one optional environment variable : * WBIN => specifies the directory of all binaries that complement the language binaries: shared libraries (''*.so'' and ''*.dll''), external modules ''*.o''. Any subdirectories will not be considered. * WLIB => specifies the location of compiled W programs, standalone programs, and //library//. No subdirectories. * WSRC => required for compilation, optional for runtime. Specifies the base directory for program source code, files named ''*.w'': used by the interpreter and during compilation (for the [[reference#include|include]] instructions). This directory is also used by the debugger. If this variable is not set, it will not be possible to interpret the source code, and in //debug// mode, navigation within the original source code will not be available. Note that the source code will be searched for in the directory tree within WSRC. ==== Usage ==== To run a W program, both the main program and the //library//, three commands must be executed: - Compilation: The W source code is compiled into W //assembler//, in text format. - Assembly: The W assembler in text format is compiled into binary: this is the format recognized by the W runtime. - Execution: The W binary is interpreted by the W runtime. A //library// can only be called with the W binary version of the library being called. Note: Modules called by //invoke// are shared libraries at the OS level (DLLs on Windows, so on Unix).\\ Additional executables: * W source formatter: This program allows you to (re)format an entire W source code in a uniform manner. * Lex rule compiler: This program compiles the lex rules (the format of W's internal engine) so they can be used in W programs as well as in the W runtime. === Compilation === > > Usage: lwc [-WSRC:] [-WLIB:] .w > The ''lwc'' compiler needs to know: * the directory containing the source code, to find the file to compile ''.w'': environment variable WSRC, or failing that, the value of the -WSRC parameter on the command line * the directory where to put the resulting file, W assembler in text format, environment variable WLIB, or failing that, the value of the -WLIB parameter on the command line The compiler stops at the first error encountered, displaying the error label, the line of source code concerned, and the error location.\\ Once the W program is compiled without errors, a file named ''.wa'' will be created in the //WLIB// directory. === Assembly === > > Usage: lwa [-c|u] [-WLIB:] > The assembler "lwa" needs to know the directory where to read the source assembler file and where to write the generated w binary : the contents of the WLIB environment variable, or failing that, the value of the -WLIB command-line parameter. The assembler converts a ''*.wa'' file to a ''*.wp'' file.\\ The ''-c'' option in the assembly allows you to compress the generated //wp// binary. Compressed binaries are automatically handled by the disassembler (option ''-u'') and by the w runtime (program ''lw'' below).\\\ The assembler also allows disassembling a W binary by producing the assembler source code in text format : add the option ''-u'' to the command. The disassembler converts a ''*.wp'' file to ''*.wa''. The rule regarding the WLIB directory applies to both disassembly and assembly. === Execution === > > Usage: lw [-d] [-t] [-WBIN:] [-WLIB:] [-WSRC:] [parms...] > The W runtime is launched with the executable ''lw''. The W runtime needs to know : * the directory containing the OS binaries (libraries used by the runtime), as well as the OS modules in binary form (called by //invoke//): environment variable WBIN, or failing that, the value of the -WBIN command-line parameter * the directory where to read the W binaries (main program, but also any //library//W), environment variable WLIB, or failing that, the value of the -WLIB command-line parameter The W runtime is located in a directory present in the OS's //PATH//, and should therefore be found automatically by the shell.\\ The directory containing the base path to the sources (//WSRC//) is optional. It is useful if the debugger needs to be used. The ''-d'' option starts the runtime in debug mode on the program. The ''-t'' option displays the assembler instructions executed by the runtime for the requested program in the console. The runtime executes the binary program W (the ''.wp'' extension is not required).\\ The following are potential parameters that will be used by the W program (not by the runtime). === Formatting === > > Usage: lwf > The formatter reads the input file, , reformats it, and then overwrites the original file with the formatted version. The formatted version is also sent to standard output.\\ Formatting is done according to the //W// standard : * Indentation in increments of 3 spaces * End-of-line comments, starting with '';'', are separated from the code by spaces to align to a column width that is a multiple of 8 * The following instructions raise the level: ''begin library background sub if loop foreach'' === Lex Compilation === //Under Construction//