C1R Implementation: Difference between revisions
Content added Content deleted
(Initial version) |
(Special treatment for the Quine task) |
||
Line 2: | Line 2: | ||
c1r is the implementation for the [[C1R]] language on Unix machines; porting to Windows and other platforms should be fairly easy. |
c1r is the implementation for the [[C1R]] language on Unix machines; porting to Windows and other platforms should be fairly easy. |
||
In fact c1r is a simple shell script that efficiently uses the already available [[C]] compiler named cc |
In fact c1r is a simple shell script that efficiently uses the already available [[C]] compiler named cc. |
||
The "Quine" task required special treatment. |
|||
<lang c>#! /bin/bash |
<lang c>#! /bin/bash |
||
Line 34: | Line 36: | ||
if [ $WORDCOUNT -eq 1 ] |
if [ $WORDCOUNT -eq 1 ] |
||
then |
then |
||
# Note: the self-printing Quine program requires special treatment |
|||
⚫ | |||
if [ `cat $FILENAME` = "Quine" ] |
|||
⚫ | |||
then |
|||
cat << EOF > $FILENAME1 |
|||
#include <stdio.h> |
|||
int main(char args[]) {printf("Quine\\n");} |
|||
EOF |
|||
else |
|||
⚫ | |||
⚫ | |||
fi |
|||
fi |
fi |
||
Revision as of 00:19, 21 November 2011
C1R Implementation is an implementation of C1R.
Other implementations of C1R.
c1r is the implementation for the C1R language on Unix machines; porting to Windows and other platforms should be fairly easy.
In fact c1r is a simple shell script that efficiently uses the already available C compiler named cc. The "Quine" task required special treatment.
<lang c>#! /bin/bash
- C1R compiler
- remove HTML tags, but replace "
" by newlines
function removeHTMLtags() {
sed -e 's~
~\
~g' | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' }
- unescape HTML codes: replace "<" by "<" etc
function unescapeHTML() {
sed -e 's/<\;/</g;s/>\;/>/g;s/ \;/ /g;s/"\;/"/g;s/(\;/(/g;s/)\;/)/g;s/[\;/[/g;s/]\;/]/g;s/{\;/{/g;s/}\;/}/g'
}
FILENAME=$1
if [ -z ${FILENAME} ] then
echo "Usage: $0 <fileName>" exit 1
fi
FILENAME1=${FILENAME}.c ROSETTAURL=rosettacode.org/wiki WORDCOUNT=`cat $FILENAME|wc -l`
cp ${FILENAME} ${FILENAME1}
if [ $WORDCOUNT -eq 1 ] then
# Note: the self-printing Quine program requires special treatment if [ `cat $FILENAME` = "Quine" ] then cat << EOF > $FILENAME1
- include <stdio.h>
int main(char args[]) {printf("Quine\\n");} EOF
else PAGEURL=$ROSETTAURL/`cat $FILENAME`
curl $PAGEURL 2>/dev/null | grep -m 1 "
" | removeHTMLtags | unescapeHTML >${FILENAME1} fi fi cc $FILENAME1 </lang> A typical test session would look like: <lang bash> $ echo Hello_world/Text >hw.c1r $ ./c1r hw.c1r $ ./a.out Goodbye, World! </lang>