Advertisement
Guest User

Untitled

a guest
May 27th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.69 KB | None | 0 0
  1. (function (f) {
  2. var readln = function (x) {
  3. window[x] = +prompt()
  4. };
  5. var writeln = function (x) {
  6. alert(window[x])
  7. };
  8. eval(f.toString()
  9. .replace(/(.+n){4}([sS]+)en[^]+$/, '$2')
  10. .replace(/((.))/g, '("$1")')
  11. .replace(':', '')
  12. )
  13. })(function(){/*
  14. program test;
  15. var a, b, c: integer;
  16. begin
  17. readln(a);
  18. readln(b);
  19. c := a + b;
  20. writeln(c);
  21. end.
  22. */});
  23.  
  24. package PascalSyntax;
  25. use Filter::Simple;
  26. use Exporter;
  27. @ISA=(Exporter);
  28. @EXPORT = qw(var program readln writeln);
  29. sub var(@){$_=undef for @_}
  30. sub readln(@) {chomp($_[0]=<>);}
  31. sub writeln(@) {print @_;}
  32. sub program(@) {};
  33. FILTER {
  34. s/:=/=/g;s/:s+w+//g;
  35. s/begin/{/g;
  36. s/end.?/}/g;
  37. for(/vars+(.*?);/) {
  38. my $t=$1; $t=~s/s+//g;
  39. for (split(/,/,$t)) {
  40. my $var=undef;
  41. *{'main::'.$_}=sub():lvalue{$var};
  42. }
  43. }
  44. };
  45.  
  46. #!/usr/bin/perl
  47. use PascalSyntax;
  48.  
  49. program test;
  50. var a, b, c: integer;
  51. begin
  52. readln(a);
  53. readln(b);
  54. c := a + b;
  55. writeln(c);
  56. end.
  57.  
  58. #include <iostream>
  59. #define readln(a) std::cin>>a
  60. #define writeln(a) std::cout << a
  61. #define var int
  62. #define program int main(){
  63. #define test
  64. struct E{
  65. int n;
  66. } end;
  67. #define integer
  68. #define begin
  69.  
  70. program test;
  71. var a, b, c integer;
  72. begin
  73. readln(a);
  74. readln(b);
  75. c = a + b;
  76. writeln(c);
  77. end.
  78.  
  79. n;
  80. }
  81.  
  82. sub r{$_[0]=<>}
  83. sub wr{print@_}
  84. $_=q.
  85.  
  86. program test;
  87. var a, b, c: integer;
  88. begin
  89. readln(a);
  90. readln(b);
  91. c := a + b;
  92. writeln(c);
  93. end.
  94.  
  95. ;s/b(w)b/$$1/g
  96. ;s/^S.*|.{4}n|://gm
  97. ;eval
  98.  
  99. r($a);
  100. r($b);
  101. $c = $a + $b;
  102. wr($c);
  103.  
  104. using System;
  105. using System.Data;
  106. using System.Text.RegularExpressions;
  107. using VarIntegers = System.Collections.Generic.Dictionary<string, int>;
  108.  
  109. namespace Q526265_MyAnswer
  110. {
  111. class Program
  112. {
  113. static void RunProgram(string textProgram)
  114. {
  115. DataTable dt = new DataTable();
  116. VarIntegers vars = new VarIntegers();
  117. Func<string, string> getVarName = str => Regex.Match(str, @"(([w]+))").Groups[1].Value;
  118. foreach (var item in textProgram.Replace("rn", "").Split(';'))
  119. {
  120. if (item.Contains("readln"))
  121. vars[getVarName(item)] = int.Parse(Console.ReadLine());
  122. else if (item.Contains("writeln"))
  123. Console.WriteLine(vars[getVarName(item)]);
  124. else if (item.Contains(":="))
  125. {
  126. var exp = Regex.Split(item.Replace(" ", ""), ":=");
  127. vars[exp[0]] = (int)dt.Compute(Regex.Replace(exp[1], @"[w]+", m => vars[m.ToString()].ToString()), "");
  128. }
  129. }
  130. }
  131.  
  132. static void Main()
  133. {
  134.  
  135. RunProgram(@"
  136. program test;
  137. var a, b, c: integer;
  138. begin
  139. readln(a);
  140. readln(b);
  141. c := a + b;
  142. writeln(c);
  143. end.
  144. ");
  145. RunProgram(@"
  146. program test;
  147. var number1, number2, number3: integer;
  148. begin
  149. readln(number1);
  150. readln(number2);
  151. number3 := number1 * number2 - (number1 + number2);
  152. writeln(number3);
  153. end.
  154. ");
  155. }
  156. }
  157.  
  158. }
  159.  
  160. #define test
  161. #define var struct{int
  162. #define integer 1;}end;a,b,c
  163. #define begin main(){
  164. #define readln(x) scanf("%d",&x)
  165. #define writeln(x) printf("%d",x)
  166.  
  167. program test;
  168. var a, b, c: integer;
  169. begin
  170. readln(a);
  171. readln(b);
  172. c = a + b;
  173. writeln(c);
  174. end.
  175.  
  176. a;}
  177.  
  178. # 1 "test.c"
  179. # 1 "<built-in>"
  180. # 1 "<command-line>"
  181. # 1 "test.c"
  182.  
  183. program;
  184. struct{int a, b, c: 1;}end;a,b,c;
  185. main(){
  186. scanf("%d",&a);
  187. scanf("%d",&b);
  188. c = a + b;
  189. printf("%d",c);
  190. end.
  191.  
  192. a;}
  193.  
  194. #define program
  195. #define test
  196. #define begin int main(void){
  197. #define end }
  198. #define var(a,b,c,...) int a,b,c
  199. #define readln(a) scanf_s("%d",&a)
  200. #define writeln(a) printf("%d",a)
  201.  
  202. program test;
  203. var(a, b, c, : integer);
  204. begin
  205. readln(a);
  206. readln(b);
  207. c = a + b;
  208. writeln(c);
  209. end
  210.  
  211. code_pas = '''
  212. program test;
  213. var a, b, c: integer;
  214. begin
  215. readln(a);
  216. readln(b);
  217. c := a + b;
  218. writeln(c);
  219. end.'''
  220.  
  221. code_pas = code_pas.split('n')
  222. code_pas = code_pas[3:7]
  223. code_pas[0] = code_pas[0].replace(' readln(a);','a = int(input())')
  224. code_pas[1] = code_pas[1].replace(' readln(b);','b = int(input())')
  225. code_pas[2] = code_pas[2].replace(' c := a + b;','c = a +b')
  226. code_pas[3] = code_pas[3].replace(' writeln(c);','print(c)')
  227. code = 'n'.join(code_pas)
  228. co = compile(code,'','exec')
  229. exec(co)
  230.  
  231. code_pas = '''
  232. program test;
  233. var a, b, c: integer;
  234. begin
  235. readln(a);
  236. readln(b);
  237. c := a + b;
  238. writeln(c);
  239. end.'''
  240. code_py = '''
  241. a = int(input())
  242. b = int(input())
  243. c = a + b
  244. print(c)'''
  245.  
  246. code = code_pas.replace(code_pas, code_py)
  247. co = compile(code,'','exec')
  248. exec(co)
  249.  
  250. import bsh.EvalError;
  251. import java.io.IOException;
  252. import bsh.Interpreter;
  253.  
  254. public class Engine {
  255.  
  256. //Задание с ru.SO, скопированное без каких-либо изменений
  257. private final String sourcePascal = "program test;nvar a, b, c: integer;nbeginn readln(a);n readln(b);n c := a + b;n writeln(c);nend.";
  258.  
  259. private final String classPrefix = "public class Test{";
  260. private String methodPrefix = "public void testMethod(){";
  261. private final String postfix = "}";
  262. private final String readln = "private int readln(){Scanner in = new Scanner(System.in);return in.nextInt();}";
  263. private final String writeln = "private void writeln(int a){System.out.println(a);}";
  264. private final String engineScript = "Test t = new Test();t.testMethod();";
  265.  
  266. private String translateToJava(String source) {
  267. String preparedCode = source.substring(source.indexOf(";") + 1).replace(":=", "=").replace("var a, b, c: integer", "int a,b,c").replace("begin", "{").replace("end.", "}").replace("readln(a)", "a=readln()").replace("readln(b)", "b=readln()");
  268. String methodScript = methodPrefix +preparedCode+ postfix;
  269. String classScript = classPrefix + readln + writeln + methodScript + postfix;
  270. String result = classScript + engineScript;
  271. return result;
  272. }
  273.  
  274. public void run() throws IOException, EvalError {
  275. Interpreter i = new Interpreter();
  276. i.eval(translateToJava(sourcePascal));
  277. }
  278. }
  279.  
  280. Engine en =new Engine();
  281. en.run();
  282.  
  283. public class Test{private int readln(){Scanner in = new Scanner(System.in);return in.nextInt();}private void writeln(int a){System.out.println(a);}public void testMethod(){
  284. int a,b,c;
  285. {
  286. a=readln();
  287. b=readln();
  288. c = a + b;
  289. writeln(c);
  290. }}}Test t = new Test();t.testMethod();
  291.  
  292. using System;
  293. using System.Reflection;
  294. using System.Text.RegularExpressions;
  295.  
  296. namespace Q526265_MyAnswer2
  297. {
  298. class Program
  299. {
  300. static void RunProgram(string pascalProgram)
  301. {
  302. string className = "Program";
  303. Func<string, string> pascalType2SharpType = pascalType =>
  304. {
  305. switch (pascalType)
  306. {
  307. case "integer":
  308. return "int";
  309. }
  310. return "object";
  311. };
  312. var sharpProgram = Regex.Replace(pascalProgram, @"program (w+);", m => { className = m.Groups[1].Value; return m.Result(@"
  313. using System;
  314. class $1 {
  315. static void readln(ref int variable) {
  316. variable = int.Parse(Console.ReadLine());
  317. }
  318. static void writeln(int value) {
  319. Console.WriteLine(value);
  320. }
  321. "); });
  322. sharpProgram = Regex.Replace(sharpProgram, @"var (.*): (w+);", m => m.Result("static " + pascalType2SharpType(m.Groups[2].Value) + " $1;"));
  323. sharpProgram = Regex.Replace(sharpProgram, @"readln((w+))", "readln(ref $1)");
  324. sharpProgram = sharpProgram.Replace("begin", "static void Main() {").Replace("end.", "}}").Replace(":=", "=");
  325.  
  326. object programObject = new Microsoft.CSharp.CSharpCodeProvider()
  327. .CompileAssemblyFromSource(new System.CodeDom.Compiler.CompilerParameters(), sharpProgram)
  328. .CompiledAssembly.CreateInstance(className);
  329. programObject.GetType().GetMethod("Main", BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, null);
  330. }
  331.  
  332. static void Main(string[] args)
  333. {
  334. RunProgram(@"
  335. program test;
  336. var a, b, c: integer;
  337. begin
  338. readln(a);
  339. readln(b);
  340. c := a + b;
  341. writeln(c);
  342. end.
  343. ");
  344. RunProgram(@"
  345. program MyProgram;
  346. var a, b, c, d: integer;
  347. begin
  348. readln(a);
  349. readln(b);
  350. readln(d);
  351. c := (a + b) / d;
  352. writeln(c);
  353. end.
  354. ");
  355. }
  356. }
  357. }
  358.  
  359. code = """
  360. program test;
  361. var a, b, c: integer;
  362. begin
  363. readln(a);
  364. readln(b);
  365. c := a + b;
  366. writeln(c);
  367. end.
  368. """
  369. .replace('program test;', '')
  370. .replace('var a, b, c: integer;', '')
  371. .replace('begin', '')
  372. .replace('end.', '')
  373. .replace(' ', '')
  374. .replace(':=', '=')
  375. .replace('writeln', 'print')
  376. .strip()
  377.  
  378. import re
  379. code = re.sub('readln((.+));', r'1 = int(input())', code)
  380.  
  381. exec(code)
  382.  
  383. p('
  384. program test;
  385.  
  386. var a, b, c: integer;
  387. begin
  388. readln(a);
  389. readln(b);
  390. c := a + b;
  391. writeln(c);
  392. end.
  393. ');
  394.  
  395. sub p {
  396. # Получаем токены.
  397. while (my $s = substr($_[0], $i++, 1)) {
  398. $s !~ /s/ ? $t .= $s : $t ne '' ? ((push @t, $t) and ($t='')):();
  399. }
  400.  
  401. # Анализируем их, составляя текстовый аналог pascal программы для perl.
  402. for (my $i=0; $i < @t; $i++) {
  403. $e .= '$'.substr($t[$i],7,1).'=<>;' if $t[$i]=~/^readln/;
  404. $e .= '$'.$t[$i-1].'=$'.$t[$i+1].$t[$i+2].'$'.$t[$i+3] if $t[$i] eq ':=';
  405. $e .= 'print$'. (substr($t[$i], 8, 1)).';' if $t[$i]=~/^writeln/;
  406. }
  407.  
  408. # Выполняем программу.
  409. eval $e;
  410. }
  411.  
  412. echo '
  413. Dreadln(a) scanf("%d",&a);
  414. Dwriteln(a) printf("%d",a);
  415. Dvar int
  416. Dtest
  417. Dinteger
  418. Dbegin main(){
  419. Dend ;
  420. program test;
  421. var a, b, c: integer;
  422. begin
  423. readln(a);
  424. readln(b);
  425. c := a + b;
  426. writeln(c);
  427. end.
  428. }' | sed 's/[.:]//g' | sed 's/D/#define /g'| gcc -x c - -o 1 && ./1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement