Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function (f) {
- var readln = function (x) {
- window[x] = +prompt()
- };
- var writeln = function (x) {
- alert(window[x])
- };
- eval(f.toString()
- .replace(/(.+n){4}([sS]+)en[^]+$/, '$2')
- .replace(/((.))/g, '("$1")')
- .replace(':', '')
- )
- })(function(){/*
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.
- */});
- package PascalSyntax;
- use Filter::Simple;
- use Exporter;
- @ISA=(Exporter);
- @EXPORT = qw(var program readln writeln);
- sub var(@){$_=undef for @_}
- sub readln(@) {chomp($_[0]=<>);}
- sub writeln(@) {print @_;}
- sub program(@) {};
- FILTER {
- s/:=/=/g;s/:s+w+//g;
- s/begin/{/g;
- s/end.?/}/g;
- for(/vars+(.*?);/) {
- my $t=$1; $t=~s/s+//g;
- for (split(/,/,$t)) {
- my $var=undef;
- *{'main::'.$_}=sub():lvalue{$var};
- }
- }
- };
- #!/usr/bin/perl
- use PascalSyntax;
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.
- #include <iostream>
- #define readln(a) std::cin>>a
- #define writeln(a) std::cout << a
- #define var int
- #define program int main(){
- #define test
- struct E{
- int n;
- } end;
- #define integer
- #define begin
- program test;
- var a, b, c integer;
- begin
- readln(a);
- readln(b);
- c = a + b;
- writeln(c);
- end.
- n;
- }
- sub r{$_[0]=<>}
- sub wr{print@_}
- $_=q.
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.
- ;s/b(w)b/$$1/g
- ;s/^S.*|.{4}n|://gm
- ;eval
- r($a);
- r($b);
- $c = $a + $b;
- wr($c);
- using System;
- using System.Data;
- using System.Text.RegularExpressions;
- using VarIntegers = System.Collections.Generic.Dictionary<string, int>;
- namespace Q526265_MyAnswer
- {
- class Program
- {
- static void RunProgram(string textProgram)
- {
- DataTable dt = new DataTable();
- VarIntegers vars = new VarIntegers();
- Func<string, string> getVarName = str => Regex.Match(str, @"(([w]+))").Groups[1].Value;
- foreach (var item in textProgram.Replace("rn", "").Split(';'))
- {
- if (item.Contains("readln"))
- vars[getVarName(item)] = int.Parse(Console.ReadLine());
- else if (item.Contains("writeln"))
- Console.WriteLine(vars[getVarName(item)]);
- else if (item.Contains(":="))
- {
- var exp = Regex.Split(item.Replace(" ", ""), ":=");
- vars[exp[0]] = (int)dt.Compute(Regex.Replace(exp[1], @"[w]+", m => vars[m.ToString()].ToString()), "");
- }
- }
- }
- static void Main()
- {
- RunProgram(@"
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.
- ");
- RunProgram(@"
- program test;
- var number1, number2, number3: integer;
- begin
- readln(number1);
- readln(number2);
- number3 := number1 * number2 - (number1 + number2);
- writeln(number3);
- end.
- ");
- }
- }
- }
- #define test
- #define var struct{int
- #define integer 1;}end;a,b,c
- #define begin main(){
- #define readln(x) scanf("%d",&x)
- #define writeln(x) printf("%d",x)
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c = a + b;
- writeln(c);
- end.
- a;}
- # 1 "test.c"
- # 1 "<built-in>"
- # 1 "<command-line>"
- # 1 "test.c"
- program;
- struct{int a, b, c: 1;}end;a,b,c;
- main(){
- scanf("%d",&a);
- scanf("%d",&b);
- c = a + b;
- printf("%d",c);
- end.
- a;}
- #define program
- #define test
- #define begin int main(void){
- #define end }
- #define var(a,b,c,...) int a,b,c
- #define readln(a) scanf_s("%d",&a)
- #define writeln(a) printf("%d",a)
- program test;
- var(a, b, c, : integer);
- begin
- readln(a);
- readln(b);
- c = a + b;
- writeln(c);
- end
- code_pas = '''
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.'''
- code_pas = code_pas.split('n')
- code_pas = code_pas[3:7]
- code_pas[0] = code_pas[0].replace(' readln(a);','a = int(input())')
- code_pas[1] = code_pas[1].replace(' readln(b);','b = int(input())')
- code_pas[2] = code_pas[2].replace(' c := a + b;','c = a +b')
- code_pas[3] = code_pas[3].replace(' writeln(c);','print(c)')
- code = 'n'.join(code_pas)
- co = compile(code,'','exec')
- exec(co)
- code_pas = '''
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.'''
- code_py = '''
- a = int(input())
- b = int(input())
- c = a + b
- print(c)'''
- code = code_pas.replace(code_pas, code_py)
- co = compile(code,'','exec')
- exec(co)
- import bsh.EvalError;
- import java.io.IOException;
- import bsh.Interpreter;
- public class Engine {
- //Задание с ru.SO, скопированное без каких-либо изменений
- 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.";
- private final String classPrefix = "public class Test{";
- private String methodPrefix = "public void testMethod(){";
- private final String postfix = "}";
- private final String readln = "private int readln(){Scanner in = new Scanner(System.in);return in.nextInt();}";
- private final String writeln = "private void writeln(int a){System.out.println(a);}";
- private final String engineScript = "Test t = new Test();t.testMethod();";
- private String translateToJava(String source) {
- 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()");
- String methodScript = methodPrefix +preparedCode+ postfix;
- String classScript = classPrefix + readln + writeln + methodScript + postfix;
- String result = classScript + engineScript;
- return result;
- }
- public void run() throws IOException, EvalError {
- Interpreter i = new Interpreter();
- i.eval(translateToJava(sourcePascal));
- }
- }
- Engine en =new Engine();
- en.run();
- 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(){
- int a,b,c;
- {
- a=readln();
- b=readln();
- c = a + b;
- writeln(c);
- }}}Test t = new Test();t.testMethod();
- using System;
- using System.Reflection;
- using System.Text.RegularExpressions;
- namespace Q526265_MyAnswer2
- {
- class Program
- {
- static void RunProgram(string pascalProgram)
- {
- string className = "Program";
- Func<string, string> pascalType2SharpType = pascalType =>
- {
- switch (pascalType)
- {
- case "integer":
- return "int";
- }
- return "object";
- };
- var sharpProgram = Regex.Replace(pascalProgram, @"program (w+);", m => { className = m.Groups[1].Value; return m.Result(@"
- using System;
- class $1 {
- static void readln(ref int variable) {
- variable = int.Parse(Console.ReadLine());
- }
- static void writeln(int value) {
- Console.WriteLine(value);
- }
- "); });
- sharpProgram = Regex.Replace(sharpProgram, @"var (.*): (w+);", m => m.Result("static " + pascalType2SharpType(m.Groups[2].Value) + " $1;"));
- sharpProgram = Regex.Replace(sharpProgram, @"readln((w+))", "readln(ref $1)");
- sharpProgram = sharpProgram.Replace("begin", "static void Main() {").Replace("end.", "}}").Replace(":=", "=");
- object programObject = new Microsoft.CSharp.CSharpCodeProvider()
- .CompileAssemblyFromSource(new System.CodeDom.Compiler.CompilerParameters(), sharpProgram)
- .CompiledAssembly.CreateInstance(className);
- programObject.GetType().GetMethod("Main", BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, null);
- }
- static void Main(string[] args)
- {
- RunProgram(@"
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.
- ");
- RunProgram(@"
- program MyProgram;
- var a, b, c, d: integer;
- begin
- readln(a);
- readln(b);
- readln(d);
- c := (a + b) / d;
- writeln(c);
- end.
- ");
- }
- }
- }
- code = """
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.
- """
- .replace('program test;', '')
- .replace('var a, b, c: integer;', '')
- .replace('begin', '')
- .replace('end.', '')
- .replace(' ', '')
- .replace(':=', '=')
- .replace('writeln', 'print')
- .strip()
- import re
- code = re.sub('readln((.+));', r'1 = int(input())', code)
- exec(code)
- p('
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.
- ');
- sub p {
- # Получаем токены.
- while (my $s = substr($_[0], $i++, 1)) {
- $s !~ /s/ ? $t .= $s : $t ne '' ? ((push @t, $t) and ($t='')):();
- }
- # Анализируем их, составляя текстовый аналог pascal программы для perl.
- for (my $i=0; $i < @t; $i++) {
- $e .= '$'.substr($t[$i],7,1).'=<>;' if $t[$i]=~/^readln/;
- $e .= '$'.$t[$i-1].'=$'.$t[$i+1].$t[$i+2].'$'.$t[$i+3] if $t[$i] eq ':=';
- $e .= 'print$'. (substr($t[$i], 8, 1)).';' if $t[$i]=~/^writeln/;
- }
- # Выполняем программу.
- eval $e;
- }
- echo '
- Dreadln(a) scanf("%d",&a);
- Dwriteln(a) printf("%d",a);
- Dvar int
- Dtest
- Dinteger
- Dbegin main(){
- Dend ;
- program test;
- var a, b, c: integer;
- begin
- readln(a);
- readln(b);
- c := a + b;
- writeln(c);
- end.
- }' | sed 's/[.:]//g' | sed 's/D/#define /g'| gcc -x c - -o 1 && ./1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement