Changes in / [e75b753:22a4292]
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
INSTALL
re75b753 r22a4292 1 cfa-cc: Cforall to C Trans-compiler1 cfa-cc: The Cforall->C Compiler System 2 2 ====================================== 3 3 4 4 Cforall is built using GNU Make and the GNU Autoconf system. It also requires 5 g++ version >= 6, bison and flex. On systems where GNU Make is the default5 g++ version >= 4.6, bison and flex. On systems where GNU Make is the default 6 6 make, the system is built by entering the commands: 7 7 8 For dev elopers using the rootgit:8 For devs using the maintainer's git: 9 9 10 $ ./autogen.sh 11 $ ./configure [ --prefix=/some/directory ] 12 $ make -j 8 install 10 ./autogen.sh 11 ./configure 12 make 13 make install 13 14 14 15 For users using the distributed tarball / github: 15 16 16 $ ./configure 17 $ make -j 8 install 17 ./configure 18 make 19 make check 20 make install 18 21 19 where 8 is the number of CPUs on your computer. 22 Options for 'configure' 23 ----------------------- 24 The script 'configure' accepts many command line arguments. Run './configure 25 --help' to see a list of all of them. This document attempts to summarize the 26 most useful arguments. 20 27 21 22 Options for configure 23 ====================================== 24 The script 'configure' accepts many command-line arguments. Run 25 26 $ ./configure --help 27 28 to list them. The most common argument is: 29 30 --prefix=/some/directory controls the path prefix common to all installed 31 cfa-cc components. Components are installed in directories bin and lib. 32 If unspecified, prefix defaults to /usr/local. To use (a subdirectory of) 33 your home directory, ${HOME}/some/dir, but do not put quotes around the 34 directory path; Cforall may appear to build, but the installed version may 35 not work properly. 36 37 38 Build Test 39 ====================================== 40 41 $ cd ./test 42 $ make -j 8 all-tests 43 44 The tests take about 2-5 minutes and can be stopped at any time. 28 --prefix=/some/directory controls the path prefix common to all installed 29 cfa-cc components. Some components are installed in /some/directory/bin, 30 others in /some/directory/lib. If unspecified, this defaults to /usr/local. 31 To use (a subdirectory of) your home directory, ${HOME}/some/dir works, but 32 it is important not to put quotes around the directory path; Cforall may 33 appear to build, but the installed version may not work properly. -
README
re75b753 r22a4292 1 cfa-cc: Cforall to C Trans-compiler1 cfa-cc: The Cforall->C Compiler System 2 2 ====================================== 3 3 … … 6 6 responsibility for the consequences of any malfunction of the software, 7 7 including the malfunction of any programs compiled using the software. 8 9 8 10 9 What is Cforall? … … 26 25 into a modern programming language. 27 26 28 29 27 What is cfa-cc? 30 28 --------------- 31 cfa-cc is a collection of programs centred around a translator (trans-compiler)32 that takes Cforall code as input and outputs augmented C code that implements 33 new features. The translator is complemented by a compiler driver in the style 34 of "gcc", which handles preprocessing (including cfa-cc after cpp), compiling, 35 assembling, and linking.29 cfa-cc is a collection of programs centred around a translator that takes 30 Cforall code as input and outputs corresponding C code. This is complemented 31 by a compiler driver in the style of "gcc", which handles preprocessing, 32 compiling, assembling, and linking and invokes the translator at appropriate 33 moments. 36 34 37 cfa-cc is currently written in C++, but eventually be rewritten in Cforall. 35 What is required in order to use cfa-cc? 36 ---------------------------------------- 37 Building cfa-cc requires GNU Make and gcc/g++ 4. cfa-cc is written in C++. 38 38 39 The compiler driver uses an installed version of gcc to handle all aspects of 40 the compilation process except for the Cforall->C translation. Currently, only 41 gcc 4.x is supported. 39 42 40 How to download and build cfa-cc? 41 ---------------------------------------- 42 Download cfa-cc using 43 44 $ git clone https://github.com/cforall/cforall.git 45 46 Read the ./INSTALL file for build instructions. 47 48 49 How to use cfa-cc? 43 How is cfa-cc used? 50 44 ------------------- 51 The compiler driver "cfa" accepts all of the arguments forgcc, and is used in45 The compiler driver "cfa" accepts all of the arguments of gcc, and is used in 52 46 the same way. For example: 53 47 54 55 48 cfa -c test.c 49 cfa test.o 56 50 57 Cforall source files may end with '.c' or '.cfa' in order to be compiled by the 58 compiler driver. In addition, the flag "-CFA" causes cfa to invoke the C 59 preprocessor and Cforall translator and write the translator output to standard 60 output. 51 Cforall source files must end with '.c' in order to be compiled by the compiler 52 driver. In addition, the flag "-CFA" causes cfa to invoke the preprocessor and 53 translator and send the translator output to standard output. 61 54 55 It is possible to invoke the translator directly. The translator is installed 56 by default as /usr/local/lib/cfa-cpp. A typical invocation is: 62 57 63 How to use C code with cfa-cc? 58 /usr/local/lib/cfa-cpp -cp infile outfile 59 60 If outfile is omitted, output goes to standard output; if infile is also 61 omitted, input comes from standard input. Options to the translator other than 62 "-cp" will not produce valid C code and are only useful for debugging the 63 translator. 64 65 How can C code be used with cfa-cc? 64 66 ----------------------------------- 65 cfa-cc should be able to compile and link most ANSI C programs with associated 66 C standard libraries. 67 cfa-cc should be able to compile most ANSI C programs. It is also possible to 68 link against C libraries in most cases. Since Cforall supports overloading, 69 however, names used in Cforall code are mangled in the output C code. This 70 caused linker failures when the names refer to functions and objects in code 71 compiled with a standard C compiler. For this reason, it is necessary to 72 enclose the declarations of these functions and objects in extern "C" {} 73 blocks. For example: 67 74 68 Like C++, Cforall supports overloading, resulting in duplicate names that are 69 disambiguated using name mangling in the translated C code. To prevent 70 mangling of C names, it is necessary to wrap C declarations in an extern "C" 71 block, as for C++. For example: 72 73 extern "C" { 74 #include <curses.h> 75 #include <getopt.h> 76 } 75 extern "C" { 76 #include <stdio.h> 77 #include <stdlib.h> 78 } 77 79 78 80 The extern "C" turns off name mangling for functions and objects declared 79 within the block. All C standard headers are pre-wrapped, so most wrapping is 80 unnecessary. 81 81 within the block. As a result, it is not possible to overload their names. 82 82 83 83 What's wrong with cfa-cc? 84 84 ------------------------- 85 85 86 The authors consider cfa-cc to be in a semi-stable state. It is possible for 87 reasonable Cforall programs to fail compilation. A list of bugs and fixes is 88 available here: https://cforall.uwaterloo.ca/trac. We encourage users to 89 report their experiences to cforall@plg.uwaterloo.ca, but we can make no 90 promises regarding support. 86 The authors consider this software to be in an unstable state. It is quite 87 likely that there are many reasonable programs that will fail to compile. We 88 encourage users to report their experiences to cforall@plg.uwaterloo.ca, but we 89 make no promises regarding support. 91 90 92 Also, the Cforall features web-page https://cforall.uwaterloo.ca/features lists 93 small syntactic and semantic differences with standard C. 91 We have fixed most of the problems that we are aware of. There are some 92 exceptions: 94 93 94 - initializers are poorly implemented; in particular, file-scope initializers 95 may result in the generation of invalid C code 96 97 - the ISO C99 designated initialization syntax '[n] = m' or '.n = m' is not 98 supported; use a colon in place of the equal sign 99 100 - some legitimate programs will produce warnings from the C compiler; these are 101 harmless (in particular, the creation of libcfa.a in the build process should 102 cause four warnings from gcc) 103 104 - abstract types introduced using the keyword 'type' are not implemented 105 (although 'type' can be used to introduce type parameters) 106 107 - the implicit coercion of structure types to the type of their first member is 108 not implemented 95 109 96 110 Who is responsible for cfa-cc? 97 111 ------------------------------ 98 Cforall was designed and implemented by Andrew Beach, Richard Bilson, Michael 99 Brooks, Peter A. Buhr, Thierry Delisle Glen Ditchfield, Rodolfo G. Esteves, 100 Aaron Moss, Colby Parsons, Rob Schluntz, Fangren Yu, Mubeen Zulfiqar, and others. 112 cfa-cc was written by Peter Buhr, Richard Bilson, and Rodolfo Esteves. 113 Questions and comments can be sent to cforall@plg.uwaterloo.ca. 101 114 102 Check the Cforall web site https://cforall.uwaterloo.ca for news and updates. 115 The Cforall project maintains a web page: 116 117 https://cforall.uwaterloo.ca -
doc/bibliography/pl.bib
re75b753 r22a4292 1673 1673 address = {Waterloo Ontario, Canada}, 1674 1674 month = sep, 1675 year = 20 20,1675 year = 2018, 1676 1676 note = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uC++.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/uC++.pdf}}, 1677 1677 } … … 4552 4552 author = {Martin Karsten}, 4553 4553 title = {{libfibre:~User-Level Threading Runtime}}, 4554 howpublished= {\href{https://git.uwaterloo.ca/mkarsten/libfibre}{https://\-git.uwaterloo.ca/\-mkarsten/\-libfibre}}, 4554 howpublished= {\href{https://git.uwaterloo.ca/mkarsten/libfibre} 4555 {https://\-git.uwaterloo.ca/\-mkarsten/\-libfibre}}, 4555 4556 note = {[Online; accessed 2020-04-15]}, 4556 4557 } -
src/Parser/parser.yy
re75b753 r22a4292 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S at Jun 26 08:44:14202113 // Update Count : 502 512 // Last Modified On : Sun Jun 20 18:46:51 2021 13 // Update Count : 5023 14 14 // 15 15 … … 2564 2564 | '*' 2565 2565 { $$ = TypeDecl::DStype; } // dtype + sized 2566 // | '(' '*' ')'2567 // { $$ = TypeDecl::Ftype; }2568 2566 | ELLIPSIS 2569 2567 { $$ = TypeDecl::Ttype; }
Note: See TracChangeset
for help on using the changeset viewer.