рд╣рдо C # (рднрд╛рдЧ 1) рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

рд╢реБрдн рджреЛрдкрд╣рд░,% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%ред рдЖрдЬ рд╣рдо C # рдпрд╛ рдЙрд╕рдХреЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд▓рд┐рдЦреЗрдВрдЧреЗред

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдореИрдВ рдЕрднреА рдПрдХ рд╕рд╛рд▓ рд╕реЗ C # рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рд╕реАрдЦ рд╕рдХрддрд╛ред рдереЛрдбрд╝рд╛ рд╕реЛрдЪрдиреЗ рдкрд░, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ Brainfuck рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рд╛рдЗрдХрд┐рд▓ рдХреЗ рдмрд┐рдирд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдЦрд╛, рдЖрджрд┐ред
рдмрд▓реНрдХрд┐, рдХрдЯ рдХреЗ рдиреАрдЪреЗ!


рд╕рдВрд╕реНрдХрд░рдг v1.0

рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ рдЕрд╕рдлрд▓ рдирд╣реАрдВ рдерд╛, рдмрд▓реНрдХрд┐ рдмрд╕ рдПрдХ рд╡рд┐рдлрд▓рддрд╛ рдереАред рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдмреЗрд╕рд┐рдХ-рдЬреИрд╕рд╛ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЯреЛрди рдирд╣реАрдВ рдерд╛ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ)ред рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереА:
#    VISIBLE , ! IF 5 < 10 VISIBLE 5    10 


рд╕рдВрд╕реНрдХрд░рдг v2.0 - рд╡рд░реНрддрдорд╛рди

рдпрд╣ рдЖрдЬ рднрд╛рд╖рд╛ рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рд╕рдмрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдВрд╕реНрдХрд░рдг 1.0 рд╕реЗ рдиреАрдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рд▓реЗрдЦрди? рд╣рдо рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ!


рдЦреИрд░, рдЖрдЦрд┐рд░рдХрд╛рд░ рдХреЛрдбрд┐рдВрдЧред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рднрд╛рд╖рд╛ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдЙрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЙрдбрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░:
 NULL -- writeline(string); write(string); readline[type](variable); F -- ->read(string); ->show(); ->delete(string); ->create(string); 


рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдЕрдЬреАрдм рдПрдл рдФрд░ NULL рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдЕрдм рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХред
F рдФрд░ NULL - рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдп, F - рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, NULL - рдорд╛рддрд╛-рдкрд┐рддрд╛ рдирд╣реАрдВ рд╣реИрдВред
рдпрд╛рдиреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

 #  F,     -> f->create(C:\15.txt); #  ,    writeline(%c !); 


рдЕрдм рд╕рдордЭреЗ? рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред
% C рдХреНрдпрд╛ рд╣реИ? рдпрд╣ \ n, \ рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╕реНрдХреЗрд▓реЗрд░реЛрд╕рд┐рд╕, рдореИрдВ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

% c - рдПрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд▓рдЧрд╛рдПрдВ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)
% n - рдирдИ рдкрдВрдХреНрддрд┐

рдХреЛрдбрд┐рдВрдЧ рдЬрд▓реНрдж рдЖ рд░рд╣реА рд╣реИ? рд╣рд╛рдБ, рдЕрднреА!


рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреЛрдбрд┐рдВрдЧ рдЬрд┐рд╕рдХрд╛ рд╕рднреА рдХреЛ рдЗрдВрддрдЬрд╛рд░ рд╣реИред
рдЕрдм рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкрд╛рд░рд╕рд░ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред

 using System; using System.IO; namespace lang { class MainClass { public static void Main (string[] args) { try { using (StreamReader sr = new StreamReader(args[0])) //     { string line; //    while ((line = sr.ReadLine()) != null) //    { Parse.PARSE(line); //  } } } catch (Exception ex) //    catch { Console.Write(" : "); Console.WriteLine(ex.Message); } } } } 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЪрд▓реЛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рдкрд╛рд░реНрд╕рд░


рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Main.cs, functional.cs рдФрд░ Parse.cs рд╣реИрдВ ред рдпреЗ рд╣рдорд╛рд░реА рд╕рднреА рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред

Main.cs рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ
Parse.cs - рд╣рдорд╛рд░реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░реНрд╕рд░
рдлрдВред рдлрдВ

рд╣рдо рдПрдХ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред
 using System; namespace lang { public class Parse { public Parse () { } public static void PARSE(string code) { if (code.IndexOf ('#') != 0) { if(code.EndsWith(";")) { int a = code.IndexOf('('); int b = code.IndexOf(')'); string func = code.Substring(0,a); string args = code.Substring(a+1,ba-1); string[] arg = args.Split(','); func = func.Replace(" ", ""); switch(func.ToLower()) { 


рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рд╕рд╛рд░реНрдердХ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдХрд░реЗрдВрдЧреЗред
public static void PARSE(string code) - рдпрд╣ рддрд╛рд░ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рд╣реИ
if (code.IndexOf ('#') != 0) { - рдпрджрд┐ рдХреЛрдб '#' рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ рд╣рдорд╛рд░реА рдЯрд┐рдкреНрдкрдгреА рд╣реИ) рддреЛ рдкрд░рд╕рд┐рдоред
if(code.EndsWith(";")) { - рдпрджрд┐ рд░реЗрдЦрд╛ '' рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЬрд╛рд░реА рд░рдЦреЗрдВ;
рдЖрдЧреЗ рдереЛрдбрд╝рд╛ рдФрд░, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝рд╛ рд╕рд╛, рд▓реЗрдХрд┐рди рддрд░реНрдХред

рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдФрд░ рддрд░реНрдХреЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓:

  function(arg1,arg2); ^ ^ ab 


рд╣рдо рдЗрд╕ рддрд░рд╣ рдХрд╛рдЯрддреЗ рд╣реИрдВ:

string func = code.Substring(0,a); - 0 рд╡рд░реНрдг рд╕реЗ рдЯреНрд░рд┐рдорд┐рдВрдЧ рд╢реБрд░реВ рдХрд░реЗрдВ рдкрд╣рд▓реЗ '(', рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ
string args = code.Substring(a+1,ba-1); - рд╣рдореЗрдВ '(' рд╕реЗ '') рдХреЗ рдмрд╛рдж рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдЪрд░рд┐рддреНрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рдорд┐рд▓рддреЗ рд╣реИрдВ; (+1)
string[] arg = args.Split(','); - ',' рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдВ
func = func.Replace(" ", ""); - рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред
  switch(func.ToLower()) { case "write": funct.write(arg); break; case "writeline": funct.writeline(arg); break; case "readline": funct.readln(arg[0]); break; } 

рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд▓рд┐рдП 3 рдореВрд▓ рдХрд╛рд░реНрдп рд╣реИрдВ, рд▓рд┐рдЦрдирд╛, рд░рд┐рдЯрд▓рд╛рдЗрди рдФрд░ рд░реАрдбрд▓рд╛рдЗрдиред

рдХрд╛рд░реНрдпреЛрдВ


рд╣рдорд╛рд░реА рднрд╛рд╖рд╛ рдореЗрдВ 3 рдЪрд░ рд╣реИрдВ,

  public static string a; public static char b; public static int c; 


рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднрд╛рд╖рд╛ рдХрд╛ рдирд╡рд╛рдЪрд╛рд░ рд╣реИред

рдлрд╝реАрдЪрд░ рдХреЛрдб:

 using System; namespace lang { public class funct { public static string a; public static char b; public static int c; public static void writeline (string[] args) { int z = 0; string s = ""; if(args[z] == "a") { // writeline(a);    a Console.WriteLine(a); } else if(args[z] == "b") { // writeline(b);    b Console.WriteLine(b); } else if(args[z] == "c") { // writeline(c);    c Console.WriteLine(c); } else { while(z < args.Length) { //         s += args[z] + " "; z++; } s = s.Replace("%n", Environment.NewLine); // %n    s = s.Replace("%c", ","); // %c   Console.WriteLine(s); //  } } public static void write (string[] args) // writeline { int z = 0; string s = ""; if(args[z] == "a") { Console.WriteLine(a); } else if(args[z] == "b") { Console.WriteLine(b); } else if(args[z] == "c") { Console.WriteLine(c); } else { while(z < args.Length) { s += args[z] + " "; z++; } s = s.Replace("%n", Environment.NewLine); s = s.Replace("%c", ","); Console.Write(s); } } public static void readln (string args) { if(args == "a") { //  == a,    a a = Console.ReadLine(); } else if(args == "b") { //, ,    Console.WriteLine("You can't use \"b\" variable as @STRING."); } else if(args == "c") { //  Console.WriteLine("You can't use \"c\" variable as @STRING."); } } } } 

рдпрд╣ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рднрд╛рдЧ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред рдЬрд▓реНрдж рдорд┐рд▓рддреЗ рд╣реИрдВ!

Source: https://habr.com/ru/post/In179529/


All Articles