ctarbide / qm4 Goto Github PK
View Code? Open in Web Editor NEWQuasar M4 (fork)
Quasar M4 (fork)
C. Tarbide <[email protected]> - February 2022 This fork starts from [1], I intend to incorporate improvements from [2]. To clean, build and install, all in one go, issue: make PREFIX="${HOME}/local" CC=gcc CFLAGS=-Wall clean qm4 install Append "-DDEBUG -g" to CFLAGS to debug. Quasar M4 is available under the same BSD license as the BSD M4 from which it is derived. And so is any of the changes incoporated by this fork. - [1]: http://haddonthethird.net/m4/m4-2.tar.bz2 - [2]: http://haddonthethird.net/m4/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ William Haddon <[email protected]> - January 2015 This is a port of FreeBSD's implementation of m4. The code is much simpler and more lightweight than GNU m4, however I have re-implemented nearly all GNU m4 features. Unlike the FreeBSD implementation, this implementation's GNU compatibility features are on by default and can not be turned off. The code has been tested on several C library implementations for Linux. I have no interest in porting to proprietary or non Unix-like systems. It is BSD licensed -- see the manual or the individual source code files for details. This m4 can be compiled by the sequence make; make install . There is no configure script. Options that are usually passed to the configure script can be passed to either the make command or the make install command. The make command accepts the arguments CC, CFLAGS, and LDFLAGS, specifying the C compiler to use, the flags to pass to the C compiler when compiling, and the flags to pass to the C compiler when linking, respectively, for example make CC=pcc CFLAGS=-O4 LDFLAGS=-I/usr/local/share/musl/include . The make install command accepts the arguments DESTDIR and PREFIX, both specifying the directory into which the binary will be installed; for example, make DESTDIR=/home/user/staging_directory PREFIX=/usr install will install the binary into the /home/user/staging_directory/usr/bin directory with the expectation that the contents of the /home/user/staging_directory directory will be copied to the root directory of the target system, so that the binary will be found in the /usr/bin directory of the target system. Below are the contents of the NOTES file that came with the BSD m4 from which this m4 is derived. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ m4 - macro processor PD m4 is based on the macro tool distributed with the software tools (VOS) package, and described in the "SOFTWARE TOOLS" and "SOFTWARE TOOLS IN PASCAL" books. It has been expanded to include most of the command set of SysV m4, the standard UN*X macro processor. Since both PD m4 and UN*X m4 are based on SOFTWARE TOOLS macro, there may be certain implementation similarities between the two. The PD m4 was produced without ANY references to m4 sources. written by: Ozan S. Yigit References: Software Tools distribution: macro Kernighan, Brian W. and P. J. Plauger, SOFTWARE TOOLS IN PASCAL, Addison-Wesley, Mass. 1981 Kernighan, Brian W. and P. J. Plauger, SOFTWARE TOOLS, Addison-Wesley, Mass. 1976 Kernighan, Brian W. and Dennis M. Ritchie, THE M4 MACRO PROCESSOR, Unix Programmer's Manual, Seventh Edition, Vol. 2, Bell Telephone Labs, 1979 System V man page for M4 Implementation Notes: [1] PD m4 uses a different (and simpler) stack mechanism than the one described in Software Tools and Software Tools in Pascal books. The triple stack thing is replaced with a single stack containing the call frames and the arguments. Each frame is back-linked to a previous stack frame, which enables us to rewind the stack after each nested call is completed. Each argument is a character pointer to the beginning of the argument string within the string space. The only exceptions to this are (*) arg 0 and arg 1, which are the macro definition and macro name strings, stored dynamically for the hash table. . . | . | <-- sp | . | +-------+ +-----+ | arg 3 ------------------------------->| str | +-------+ | . | | arg 2 --------------+ . +-------+ | * | | | +-------+ | +-----+ | plev | <-- fp +---------------->| str | +-------+ | . | | type | . +-------+ | prcf -----------+ plev: paren level +-------+ | type: call type | . | | prcf: prev. call frame . | +-------+ | | <----------+ +-------+
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.