Difference between revisions of "R.php"

From Organic Design wiki
m (Reverted edit of Sven, changed back to last version by Nad)
(Base on fortran.pgp to start)
Line 1: Line 1:
<?php
+
<?
/*************************************************************************************
+
# Fortan compiler for XmlWiki Environment
* r.php
+
# Licensed under LGPL: www.gnu.org/copyleft/lesser.html
* ----------
+
if ($GLOBALS['xwIsAdmin']) {
* Author: Jon Raphaelson (jonraphaelson@gmail.com)
+
xwSetProperty($properties,'language','TEXT');
* Copyright: (c) 2005 Jon Raphaelson, Nigel McNie (http://qbnz.com/highlighter)
+
$server = $_SERVER['HTTP_HOST'];
* Release Version: 1.0.7.4
+
$htdocs = $_SERVER['DOCUMENT_ROOT'];
* CVS Revision Version: $Revision: 1.3 $
+
if (!ereg( "\\/$", $htdocs)) $htdocs .= '/';
* Date Started: 2004/08/30
 
* Last Modified: $Date: 2005/10/22 07:52:59 $
 
*
 
* Scheme language file for GeSHi.
 
*
 
* CHANGES
 
* -------
 
* 2005/09/22 (1.0.0)
 
*  -  First Release
 
*
 
* TODO (updated 2005/09/22)
 
* -------------------------
 
*
 
*************************************************************************************
 
*
 
*    This file is part of GeSHi.
 
*
 
*  GeSHi is free software; you can redistribute it and/or modify
 
*  it under the terms of the GNU General Public License as published by
 
*  the Free Software Foundation; either version 2 of the License, or
 
*  (at your option) any later version.
 
*
 
*  GeSHi is distributed in the hope that it will be useful,
 
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
*  GNU General Public License for more details.
 
*
 
*  You should have received a copy of the GNU General Public License
 
*  along with GeSHi; if not, write to the Free Software
 
*  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
*
 
************************************************************************************/
 
  
$language_data = array (
+
$src = $htdocs.'wiki/source.f77';
'LANG_NAME' => 'R',
+
$gcc = '/usr/bin/gcc -x f77';
'COMMENT_SINGLE' => array(1 => '#'),
+
$out = $htdocs.'wiki/a.out';
'COMMENT_MULTI' => array(';|' => '|;'),
+
$stdout = $htdocs.'wiki/a.stdout';
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+
$stderr = $htdocs.'wiki/a.stderr';
'QUOTEMARKS' => array('"'),
 
'ESCAPE_CHAR' => '\\',
 
'KEYWORDS' => array(
 
1 => array(
 
  'abs', 'acos', 'and', 'angle', 'append', 'appply', 'approximate',
 
  'asin', 'assoc', 'assq', 'assv', 'atan',
 
 
 
  'begin', 'boolean?', 'bound-identifier=?',
 
 
 
  'caar', 'caddr', 'cadr', 'call-with-current-continuation',
 
  'call-with-input-file', 'call-with-output-file', 'call/cc', 'car',
 
  'case', 'catch', 'cdddar', 'cddddr', 'cdr', 'ceiling', 'char->integer',
 
  'char-alphabetic?', 'char-ci<=?', 'char-ci<?', 'char-ci?', 'char-ci>=?',
 
  'char-ci>?', 'char-ci=?', 'char-downcase', 'char-lower-case?',
 
  'char-numeric', 'char-ready', 'char-ready?', 'char-upcase',
 
  'char-upper-case?', 'char-whitespace?', 'char<=?', 'char<?', 'char=?',
 
  'char>=?', 'char>?', 'char?', 'close-input-port', 'close-output-port',
 
  'complex?', 'cond', 'cons', 'construct-identifier', 'cos',
 
  'current-input-port', 'current-output-port',
 
 
 
  'd', 'define', 'define-syntax', 'delay', 'denominator', 'display', 'do',
 
 
 
  'e', 'eof-object?', 'eq?', 'equal?', 'eqv?', 'even?', 'exact->inexact',
 
  'exact?', 'exp', 'expt', 'else',
 
 
 
  'f', 'floor', 'for-each', 'force', 'free-identifer=?',
 
 
 
  'gcd', 'gen-counter', 'gen-loser', 'generate-identifier',
 
 
 
  'identifier->symbol', 'identifier', 'if', 'imag-part', 'inexact->exact',
 
  'inexact?', 'input-port?', 'integer->char', 'integer?', 'integrate-system',
 
 
 
  'l', 'lambda', 'last-pair', 'lcm', 'length', 'let', 'let*', 'letrec',
 
  'list', 'list->string', 'list->vector', 'list-ref', 'list-tail', 'list?',
 
  'load', 'log',
 
 
 
  'magnitude', 'make-polar', 'make-promise', 'make-rectangular',   
 
  'make-string', 'make-vector', 'map', 'map-streams', 'max', 'member',
 
  'memq', 'memv', 'min', 'modulo',
 
 
 
  'negative', 'newline', 'nil', 'not', 'null?', 'number->string', 'number?',
 
  'numerator',
 
 
 
  'odd?', 'open-input-file', 'open-output-file', 'or', 'output-port',
 
 
 
  'pair?', 'peek-char', 'positive?', 'procedure?',
 
 
 
  'quasiquote', 'quote', 'quotient',
 
 
 
  'rational', 'rationalize', 'read', 'read-char', 'real-part', 'real?',
 
  'remainder', 'return', 'reverse',
 
 
 
  's', 'sequence', 'set!', 'set-char!', 'set-cdr!', 'sin', 'sqrt', 'string',
 
  'string->list', 'string->number', 'string->symbol', 'string-append',
 
  'string-ci<=?', 'string-ci<?', 'string-ci=?', 'string-ci>=?',
 
  'string-ci>?', 'string-copy', 'string-fill!', 'string-length',
 
  'string-ref', 'string-set!', 'string<=?', 'string<?', 'string=?',
 
  'string>=?', 'string>?', 'string?', 'substring', 'symbol->string',
 
  'symbol?', 'syntax', 'syntax-rules',
 
 
 
  't', 'tan', 'template', 'transcript-off', 'transcript-on', 'truncate',
 
 
 
  'unquote', 'unquote-splicing', 'unwrap-syntax',
 
 
 
  'vector', 'vector->list', 'vector-fill!', 'vector-length', 'vector-ref',
 
  'vector-set!', 'vector?',
 
 
 
  'with-input-from-file', 'with-output-to-file', 'write', 'write-char',
 
 
 
  'zero?'
 
 
 
)
 
),
 
'SYMBOLS' => array(
 
'(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|'
 
),
 
'CASE_SENSITIVE' => array(
 
GESHI_COMMENTS => true,
 
1 => false
 
),
 
'STYLES' => array(
 
'KEYWORDS' => array(
 
1 => 'color: #b1b100;'
 
),
 
'COMMENTS' => array(
 
1 => 'color: #808080; font-style: italic;',
 
'MULTI' => 'color: #808080; font-style: italic;'
 
),
 
'ESCAPE_CHAR' => array(
 
0 => 'color: #000099; font-weight: bold;'
 
),
 
'BRACKETS' => array(
 
0 => 'color: #66cc66;'
 
),
 
'STRINGS' => array(
 
0 => 'color: #ff0000;'
 
),
 
'NUMBERS' => array(
 
0 => 'color: #cc66cc;'
 
),
 
'METHODS' => array(
 
0 => 'color: #202020;'
 
),
 
'SYMBOLS' => array(
 
0 => 'color: #66cc66;'
 
),
 
'REGEXPS' => array(
 
),
 
'SCRIPT' => array(
 
)
 
),
 
'URLS' => array(
 
),
 
'OOLANG' => false,
 
'OBJECT_SPLITTERS' => array(
 
),
 
'REGEXPS' => array(
 
),
 
'STRICT_MODE_APPLIES' => GESHI_NEVER,
 
'SCRIPT_DELIMITERS' => array(
 
),
 
'HIGHLIGHT_STRICT_BLOCK' => array(
 
)
 
);
 
  
 +
// Write the source to tmp file source
 +
if ($handle = fopen($src, 'w+')) {
 +
fwrite($handle, "$article\n");
 +
fclose($handle);
 +
}
 +
 +
// Compile & excecute
 +
$article = "Compiling using $gcc\n";
 +
$now = microtime();
 +
shell_exec("$gcc $src 1>$stdout 2>$stderr");
 +
$article .= "Compilation took " . (microtime() - $now) . " usec\n";
 +
$article .= file_get_contents($stdout).file_get_contents($stderr);
 +
$article .= "\n\nExecuting compiled result:\n";
 +
$now = microtime();
 +
$article .= shell_exec("$out 2>&1");
 +
$article .= "Execution took " . (microtime() - $now) . " usec\n";
 +
}
 +
else xwMessage('Permission denied: Only admin can compile and execute Fortran articles', 'red');
 
?>
 
?>

Revision as of 23:26, 2 September 2006

<?

  1. Fortan compiler for XmlWiki Environment
  2. Licensed under LGPL: www.gnu.org/copyleft/lesser.html

if ($GLOBALS['xwIsAdmin']) { xwSetProperty($properties,'language','TEXT'); $server = $_SERVER['HTTP_HOST']; $htdocs = $_SERVER['DOCUMENT_ROOT']; if (!ereg( "\\/$", $htdocs)) $htdocs .= '/';

$src = $htdocs.'wiki/source.f77'; $gcc = '/usr/bin/gcc -x f77'; $out = $htdocs.'wiki/a.out'; $stdout = $htdocs.'wiki/a.stdout'; $stderr = $htdocs.'wiki/a.stderr';

// Write the source to tmp file source if ($handle = fopen($src, 'w+')) { fwrite($handle, "$article\n"); fclose($handle); }

// Compile & excecute $article = "Compiling using $gcc\n"; $now = microtime(); shell_exec("$gcc $src 1>$stdout 2>$stderr"); $article .= "Compilation took " . (microtime() - $now) . " usec\n"; $article .= file_get_contents($stdout).file_get_contents($stderr); $article .= "\n\nExecuting compiled result:\n"; $now = microtime(); $article .= shell_exec("$out 2>&1"); $article .= "Execution took " . (microtime() - $now) . " usec\n"; } else xwMessage('Permission denied: Only admin can compile and execute Fortran articles', 'red'); ?>