Changes in / [22a4292:e75b753]
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
INSTALL
r22a4292 re75b753 1 cfa-cc: The Cforall->C Compiler System1 cfa-cc: Cforall to C Trans-compiler 2 2 ====================================== 3 3 4 4 Cforall is built using GNU Make and the GNU Autoconf system. It also requires 5 g++ version >= 4.6, bison and flex. On systems where GNU Make is the default5 g++ version >= 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 s using the maintainer'sgit:8 For developers using the root git: 9 9 10 ./autogen.sh 11 ./configure 12 make 13 make install 10 $ ./autogen.sh 11 $ ./configure [ --prefix=/some/directory ] 12 $ make -j 8 install 14 13 15 14 For users using the distributed tarball / github: 16 15 17 ./configure 18 make 19 make check 20 make install 16 $ ./configure 17 $ make -j 8 install 21 18 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. 19 where 8 is the number of CPUs on your computer. 27 20 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. 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. -
README
r22a4292 re75b753 1 cfa-cc: The Cforall->C Compiler System1 cfa-cc: Cforall to C Trans-compiler 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 8 9 9 10 What is Cforall? … … 25 26 into a modern programming language. 26 27 28 27 29 What is cfa-cc? 28 30 --------------- 29 cfa-cc is a collection of programs centred around a translator that takes30 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.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. 34 36 35 What is required in order to use cfa-cc? 37 cfa-cc is currently written in C++, but eventually be rewritten in Cforall. 38 39 40 How to download and build cfa-cc? 36 41 ---------------------------------------- 37 Building cfa-cc requires GNU Make and gcc/g++ 4. cfa-cc is written in C++. 42 Download cfa-cc using 38 43 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. 44 $ git clone https://github.com/cforall/cforall.git 42 45 43 How is cfa-cc used? 46 Read the ./INSTALL file for build instructions. 47 48 49 How to use cfa-cc? 44 50 ------------------- 45 The compiler driver "cfa" accepts all of the arguments ofgcc, and is used in51 The compiler driver "cfa" accepts all of the arguments for gcc, and is used in 46 52 the same way. For example: 47 53 48 49 54 cfa -c test.c 55 cfa test.o 50 56 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. 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. 54 61 55 It is possible to invoke the translator directly. The translator is installed56 by default as /usr/local/lib/cfa-cpp. A typical invocation is:57 62 58 /usr/local/lib/cfa-cpp -cp infile outfile 63 How to use C code with cfa-cc? 64 ----------------------------------- 65 cfa-cc should be able to compile and link most ANSI C programs with associated 66 C standard libraries. 59 67 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. 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: 64 72 65 How can C code be used with cfa-cc? 66 ----------------------------------- 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: 74 75 extern "C" { 76 #include <stdio.h> 77 #include <stdlib.h> 78 } 73 extern "C" { 74 #include <curses.h> 75 #include <getopt.h> 76 } 79 77 80 78 The extern "C" turns off name mangling for functions and objects declared 81 within the block. As a result, it is not possible to overload their names. 79 within the block. All C standard headers are pre-wrapped, so most wrapping is 80 unnecessary. 81 82 82 83 83 What's wrong with cfa-cc? 84 84 ------------------------- 85 85 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. 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. 90 91 91 We have fixed most of the problems that we are aware of. There are some 92 exceptions: 92 Also, the Cforall features web-page https://cforall.uwaterloo.ca/features lists 93 small syntactic and semantic differences with standard C. 93 94 94 - initializers are poorly implemented; in particular, file-scope initializers95 may result in the generation of invalid C code96 97 - the ISO C99 designated initialization syntax '[n] = m' or '.n = m' is not98 supported; use a colon in place of the equal sign99 100 - some legitimate programs will produce warnings from the C compiler; these are101 harmless (in particular, the creation of libcfa.a in the build process should102 cause four warnings from gcc)103 104 - abstract types introduced using the keyword 'type' are not implemented105 (although 'type' can be used to introduce type parameters)106 107 - the implicit coercion of structure types to the type of their first member is108 not implemented109 95 110 96 Who is responsible for cfa-cc? 111 97 ------------------------------ 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. 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. 114 101 115 The Cforall project maintains a web page: 116 117 https://cforall.uwaterloo.ca 102 Check the Cforall web site https://cforall.uwaterloo.ca for news and updates. -
doc/bibliography/pl.bib
r22a4292 re75b753 1673 1673 address = {Waterloo Ontario, Canada}, 1674 1674 month = sep, 1675 year = 20 18,1675 year = 2020, 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} 4555 {https://\-git.uwaterloo.ca/\-mkarsten/\-libfibre}}, 4554 howpublished= {\href{https://git.uwaterloo.ca/mkarsten/libfibre}{https://\-git.uwaterloo.ca/\-mkarsten/\-libfibre}}, 4556 4555 note = {[Online; accessed 2020-04-15]}, 4557 4556 } -
src/Parser/parser.yy
r22a4292 re75b753 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un Jun 20 18:46:51202113 // Update Count : 502 312 // Last Modified On : Sat Jun 26 08:44:14 2021 13 // Update Count : 5025 14 14 // 15 15 … … 2564 2564 | '*' 2565 2565 { $$ = TypeDecl::DStype; } // dtype + sized 2566 // | '(' '*' ')' 2567 // { $$ = TypeDecl::Ftype; } 2566 2568 | ELLIPSIS 2567 2569 { $$ = TypeDecl::Ttype; }
Note: See TracChangeset
for help on using the changeset viewer.