Skip to content

Commit

Permalink
add html documents to 'text' menu tab
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexey-Sagaydak committed Feb 26, 2024
1 parent 0a3dce2 commit 0aec1e8
Show file tree
Hide file tree
Showing 14 changed files with 579 additions and 16 deletions.
27 changes: 27 additions & 0 deletions Compiler/Compiler.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,45 @@
<None Update="Resources\About.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\finite_state_machine.jpg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\Grammar.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\GrammarClassification.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\Help.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\ListOfLiterature.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\logo.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\MethodOfAnalysis.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\NeutralizingErrors.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\ProblemStatement.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\SQL.xshd">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\test_case.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\tree.jpg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Resources\tree_with_error.jpg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>
13 changes: 10 additions & 3 deletions Compiler/Models/HtmlHelper.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace Compiler;

public class HtmlHelper
{
public static void OpenInBrowser(string filePath)
public static void OpenInBrowser(string path)
{
if (System.IO.File.Exists(filePath))
if (System.IO.File.Exists(path) || IsUrl(path))
{
Process p = new Process();
p.StartInfo = new ProcessStartInfo(filePath) { UseShellExecute = true };
p.StartInfo = new ProcessStartInfo(path) { UseShellExecute = true };
p.Start();
}
}

private static bool IsUrl(string input)
{
string pattern = @"^(https?|ftp)://[^\s/$.?#].[^\s]*$";
return Regex.IsMatch(input, pattern);
}
}
48 changes: 48 additions & 0 deletions Compiler/Resources/Grammar.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Грамматика</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}

h2 {
text-align: center;
color: #333;
}

.grammar {
font-family: 'Courier New', Courier, monospace;
white-space: pre-wrap;
background-color: #f9f9f9;
padding: 20px;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
</style>
</head>
<body>
<h2>Грамматика</h2>
<div class="grammar">
G[Z] = { V<sub>T</sub>, V<sub>N</sub>, P, Z }<br><br>
Z = &lt;целочисленная константа&gt;<br><br>
V<sub>T</sub> = { ‘DECLARE’, ‘INTEGER’, ‘CONSTANT’, ‘a’…’z’, ‘A’…’Z’, ‘0’…’9’, ‘:’, ‘;’, ‘+’, ‘-‘, ‘=’, ‘_’ }<br><br>
V<sub>N</sub> = { &lt;целочисленная константа&gt;, &lt;выражение&gt;, &lt;константа&gt;, &lt;присваивание&gt;, &lt;число&gt;, &lt;знак&gt;, &lt;Б&gt;, &lt;Ц&gt; }<br><br>
P = {<br>
&emsp;1. &lt;целочисленная константа&gt; → ‘DECLARE’ ( &lt;выражение&gt; )<sup>+</sup><br>
&emsp;2. &lt;выражение&gt; → &lt;id&gt; &lt;константа&gt; &lt;число&gt; ’;’<br>
&emsp;3. &lt;id&gt; → &lt;Б&gt; ( &lt;Б&gt; | &lt;Ц&gt; | ‘_’ )<sup>*</sup><br>
&emsp;4. &lt;константа&gt; → ‘CONSTANT’ ’INTEGER’ &lt;присваивание&gt;<br>
&emsp;5. &lt;число&gt; → [ &lt;знак&gt; ] ( &lt;Ц&gt; )<sup>+</sup><br>
&emsp;6. &lt;присваивание&gt; → [ ‘:’ ] ‘=’<br>
&emsp;7. &lt;знак&gt; → { ‘+’ | ‘-‘ }<br>
&emsp;8. &lt;Б&gt; → ‘a’ | ‘b’ | … | ‘z’ | ‘A’ | ‘B’ | … | ‘Z’<br>
&emsp;9. &lt;Ц&gt; → ‘0’ | ‘1’ | … | ‘9’<br>
}
</div>
</body>
</html>
75 changes: 75 additions & 0 deletions Compiler/Resources/GrammarClassification.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Классификация грамматики</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
padding: 20px;
max-width: 800px;
margin: 0 auto;
}

h1 {
color: #333;
text-align: center;
}

p {
color: #555;
font-size: 18px;
margin-bottom: 20px;
}

pre {
background-color: #f4f4f4;
padding: 10px;
border-radius: 5px;
}

code {
font-family: Consolas, monospace;
font-size: 16px;
}

ul, ol {
margin-left: 20px;
margin-bottom: 20px;
}

li {
font-size: 18px;
color: #555;
}
</style>
</head>
<body>
<h1>Классификация грамматики</h1>
<p>Понятие автоматных или регулярных грамматик было введено Н. Хомским как один из четырех классов формальных грамматик, обладающих самыми строгими ограничениями на форму записи правил вывода. Формально такие грамматики можно определить следующим образом:</p>
<p>Пусть <code>G = (V<sub>T</sub>, V<sub>N</sub>, P, Z)</code> - формальная грамматика, где:</p>
<ul>
<li><code>V<sub>T</sub></code> - множество терминальных символов,</li>
<li><code>V<sub>N</sub></code> - множество нетерминальных символов,</li>
<li><code>P</code> - множество правил вывода,</li>
<li><code>Z</code> - стартовый символ.</li>
</ul>
<p>Тогда автоматная грамматика имеет следующую структуру правил вывода:</p>
<pre><code>A → aB | a | ε</code></pre>
<p>Где:</p>
<ul>
<li><code>A ∈ V<sub>N</sub></code> - нетерминальный символ в левой части правила,</li>
<li><code>a ∈ V<sub>T</sub></code> - терминальный символ,</li>
<li><code>B ∈ V<sub>N</sub></code> - нетерминальный символ,</li>
<li><code>ε</code> - пустая строка.</li>
</ul>
<p>Это означает, что:</p>
<ol>
<li>В левой части правила может быть только один нетерминальный символ.</li>
<li>В правой части правила может быть либо один терминальный символ и один нетерминальный символ, либо только один терминальный символ, либо пустая строка.</li>
</ol>
<p>Грамматика, разработанная в этой программе, соответствует описанию автоматной грамматики, что подтверждает ее строгие ограничения на форму записи правил вывода.</p>
</body>
</html>
33 changes: 27 additions & 6 deletions Compiler/Resources/Help.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,42 @@
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
padding: 0;
line-height: 1.6;
padding: 20px;
max-width: 800px;
margin: 0 auto;
}

h1 {
color: #333;
text-align: center;
}

h2 {
p {
color: #555;
font-size: 18px;
margin-bottom: 20px;
}

p {
color: #777;
margin-bottom: 10px;
pre {
background-color: #f4f4f4;
padding: 10px;
border-radius: 5px;
}

code {
font-family: Consolas, monospace;
font-size: 16px;
}

ul, ol {
margin-left: 20px;
margin-bottom: 20px;
}

li {
font-size: 18px;
color: #555;
}
</style>
</head>
Expand Down
81 changes: 81 additions & 0 deletions Compiler/Resources/ListOfLiterature.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Список литературы</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
padding: 20px;
max-width: 800px;
margin: 0 auto;
}

h1 {
color: #333;
text-align: center;
}

p {
color: #555;
font-size: 18px;
margin-bottom: 20px;
}

pre {
background-color: #f4f4f4;
padding: 10px;
border-radius: 5px;
}

code {
font-family: Consolas, monospace;
font-size: 16px;
}

ul, ol {
margin-left: 20px;
margin-bottom: 20px;
}

li {
font-size: 18px;
color: #555;
}
</style>
</head>
<body>

<h1>Список литературы</h1>

<h2 id="учебник">Оглавление</h2>

<ul>
<li><a href="#учебник">Учебник</a></li>
<li><a href="#основная-литература">Основная литература</a></li>
<li><a href="#дополнительная-литература">Дополнительная литература</a></li>
</ul>

<h2 id="учебник">Учебник</h2>
<p><a href="https://elibrary.nstu.ru/source?id=178996">Теория языков программирования: проектирование и реализация : учебное пособие / Ю. В. Шорников. – Новосибирск : Изд-во НГТУ, 2022. – 290 с. – (Учебники НГТУ).</a></p>

<h2 id="основная-литература">Основная литература</h2>
<ol>
<li><a href="https://drive.google.com/file/d/0B5gm1TvcuJNYemliM3I5blZUQXc/view?resourcekey=0-Ph6AFSFSzSwsUNnajqDGdg">Грис Д. Конструирование компиляторов для цифровых вычислительных машин / Д. Грис ; пер. с. англ. Е. Б. Докшицкой, Л. А. Зелениной, Л. Б. Морозовой, В. С. Штаркмана,  под ред. Ю. М. Баяковского, Вс. С. Штаркмана. - М., 1975. - 544 с. : табл., схемы</a></li>
<li><a href="https://djvu.online/file/fb8K9Mrk5vQF3">Ахо А. В. Компиляторы : Принципы, технологии, инструменты / А. Ахо, Р. Сети, Д. Ульман. - М., 2003. - 768 с.</a></li>
<li><a href="https://elibrary.nstu.ru/source?id=42001">Малявко, А. А. Формальные языки и компиляторы : учебник / Малявко А. А. - Новосибирск : Изд-во НГТУ, 2014. - 431 с. (Серия "Учебники НГТУ")</a></li>
<li><a href="http://lib.tau-edu.kz/wp-content/uploads/2023/01/%D0%A1%D0%B2%D0%B5%D1%80%D0%B4%D0%BB%D0%BE%D0%B2-%D0%A1.%D0%97.-%D0%AF%D0%B7%D1%8B%D0%BA%D0%B8-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B8-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D0%B8.pdf">Свердлов С. З. Языки программирования и методы трансляции: Учебное пособие. — 2е изд., испр. — СПб.: Издательство «Лань», 2019. — 564 с.: ил. — (Учебники для вузов. Специальная литература).</a></li>
<li><a href="https://djvu.online/file/3oLSmFNfgicD4">Мозговой М. В. Классика программирования : алгоритмы, языки, автоматы, компиляторы : практический подход / Мозговой М. В. - СПб., 2006. - 320 с. : ил.</a></li>
</ol>

<h2 id="дополнительная-литература">Дополнительная литература</h2>
<ol>
<li><a href="https://djvu.online/file/etaotYd4S9NzT">Льюис Ф. Теоретические основы проектирования компиляторов / Ф. Льюис, Д. Розенкранц, Р. Стирнз ; пер. с англ. В. А. Исаева [и др.] ;  под ред. В. Н. Агафонова. - М., 1979. - 654 с.</a></li>
<li><a href="https://reallib.org/reader?file=793152">Вайнгартен Ф. Трансляция языков программирования : [монография] / Ф. Вайнгартен ; пер. с англ. Л. В. Ухова, под ред. В. В. Мартынюка. - М., 1977. - 190 с. : схемы</a></li>
<li><a href="https://djvu.online/file/EWxC8PG8F3UBo">Лебедев В. Н. Введение в системы программирования. - М., 1975. - 311 с. : ил.</a></li>
</ol>

</body>
</html>
Loading

0 comments on commit 0aec1e8

Please sign in to comment.