One can not indent code that has preprocessing directives in it. Other possibilities of extending the base pre-processor should also be thought about.Ĥ. So it should be possible to add keywords and maybe even some limited definitions of what to do these keywords when theyĪppear (so I can extend fpp to handle HPF commands). Say, in HPF, subroutine declarations start with the keyword (macro) EXTRINSIC(.), and this totally freaks out fpp and other f90 tools like f90doc (for html documenting). Why not let the user make his own inlined procedures using the above tools.ģ. The compiler will then be able to efficiently compileĪlso, I point you to C++'s inline definition for procedures. This can be done very well with the above features in N dimensions (must be known at compile time) and for all corners/boundaries. Or CoCo, why doesn't somebody work out a really nice proposal and write the preprocessor in standard portable C or C++?Īs another removed example, when solving a PDE on a 2D and 3D grid, there are many boundaries and corners that need to be coded separately. So, instead of 20 people writing 20 different preprocessors with the same limited simplistic functionality like fpp But nesting macros and varargin already exist in some nifty preprocessors like cpp and the literate programming tool FWEB. Yes, I now that this is a preprocessor that is in itself a small programming language. #macro FunctionOfAllKinds ( function) beginįunctionOfAllKinds ( Cube) ! Fortran 90's features can be used only partly to do something like this. Or maybe if one has to do this for all possible kinds/types for several different functions: To get a definition of x**3 for single precision numbers. ![]() # macro CybeOfType ( varargin (type, kind=sp)) beginĬubeOfType( Real, sp) ! or just CubeOfType( Real) If I were allowed multiline macros and nested macros and some other nifty macro features like varargin, this would be done soo elegantly in something like: For example, say I want to make two functions CubeOfReal and CubeOfInteger. Macros are expanded at one level only, with no multiline or variable argument macros! Macro/define nesting and recursion with a specified depth of recursion (or an equivalent macro looping constuct) and especially macros with variable number of arguments enable writing some very elegant code that can make a whole library It does not recognize the names of most intrinsics (just lack of time for typing all of them in, I guess)Ģ. I mean, why not do this right in C++ or C?ġ. Also, in its naked form, it does not accept command line arguments. Silly and very anoying limits on the length of files, number of commenting lines, etc. It is written in Fortran! Who on earth said that a Fortran preprocessor needs to be written in Fortran? Aren't we focusing on language interdependance? For example, since CHARACTER datums can not be allocatable even in Fortran 90 (they are apparently treated differently from strings-arrays of datums), f90ppr has some To get a nice definition for a function giving the cube of a double precision number:īut there are several things that I don't at all enjoy about it:ġ. It can have names that are concatenations of names with ?, so one can say: It indents/capitalizes Fortran code well, even in the presence of directives like !HPFģ. So it allows me to treat HPF code well by simple saying -C '!HPF' at the command line.Ģ. It recognizes the *important* fact that most extensions to the language come in the form of directives that appear to Fortran as comments, like !HPF. Say recursive or nested macros are treated, which is a *very* important topic. Also, the specification of fpp by Sun doesn't at all tell you how A preprocessor should not just let you select pieces of code to compile and maybe every now and then make a macro for x**3, that can be done well with cpp even in a Fortran context. In summary, they are both *too* simple and have very limited functionality. I also read the ISO specifications of CoCo, and I am not very happy with either. so that it compiles and runs on several systems, including my cygwin/w2k. > Many of you will have noticed that the source code for Sun fpp has been placed on netlib, and it has been outfitted with autoconf etc. Email discussion lists for the UK Education and Research communities
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |