Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java
Войти
Регистрация
Восстановить пароль
 
___Gluck
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 2
1

Программная реализация проверки существования языка KC-грамматики

16.05.2017, 02:25. Просмотров 267. Ответов 5

Здравствуйте, в поисках фрагментов кода и всевозможных подсказок часто заглядываю на этот форум, но тут мой мозг напрочь отказался выдавать свои жалкие 3% мощности, и я наконец не поленился и зарегистрировался тут

В целом задача наверняка решается просто, но я тут наворотииил-намудрииил:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package sample;
 
import java.util.HashMap;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Arrays;
 
public class Controller
{
 
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
 
        HashMap<Integer,String> P = new HashMap<Integer,String>();
        ArrayList<String> list1 = new ArrayList<String>();
        ArrayList<String> list2 = new ArrayList<String>();
        ArrayList<String> terminals = new ArrayList<String>();
        ArrayList<String> nonterminals = new ArrayList<String>();
 
        System.out.println("Введите начальный символ грамматики:");
        String X = reader.readLine();
 
 
 
        System.out.println("Введите количество терминалов:");
        int nnn = Integer.parseInt(reader.readLine());
        System.out.println("Введите терминалы:");
 
 
        for(int i = 0; i < nnn; i++)
        {
            String s = reader.readLine();
            terminals.add(s);
        }
 
 
        System.out.println("Введите количество нетерминалов:");
        int nn = Integer.parseInt(reader.readLine());
        System.out.println("Введите нетерминалы:");
 
 
        for(int i = 0; i < nn; i++)
        {
            String s = reader.readLine();
            nonterminals.add(s);
        }
 
 
        System.out.println("Введите количество правил:");
 
        int n = Integer.parseInt(reader.readLine());
 
        int keyP=1;
        int keylist=1;
        System.out.println("Введите правила:");
        System.out.println("P.S. > alt+2+6");
 
        for(int i = 0; i < n; i++)
        {
            String s = reader.readLine();
            P.put(keyP++,s);
        }
 
        for(int i = 0; i < n; i++)
        {
            String S=P.get(keylist++);
            String G1 = S.substring(0, S.indexOf('в†’'));
            list1.add(G1);
            String G2 = S.substring(S.indexOf('в†’')+1);
            list2.add(G2);
        }
 
        int zeroGG = 0;
        int zero = 0;
        int one = n-1;
        int two = n-2;
 
        for (int i = one; i >= 0; i--)
        {
 
            String Q = list1.get(i);
            String QQ = list2.get(i);
            String QQQ = nonterminals.get(i);
 
            if (test(QQ))
            {
                for (int j=0;j<QQ.length();j++)
                {
                    String nT = nonterminals.get(j);
                    char nlol = nT.charAt(0);
                    if (QQ.charAt(j) == nlol)
                    {
                        String[] gg = new String[zeroGG++];
                        ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(gg));
                        arrayList.add(Q);
                        System.out.println("N" + zero++ + " = " + arrayList);
                        String W=Q;
                        char WW = W.charAt(0);
                        break;
                    }
                }
            }
        }
    }
 
    public static boolean test(String testString)
    {
        Pattern p = Pattern.compile("[a-zA-Z]++");
        Matcher m = p.matcher(testString);
        return m.matches();
    }
}
Г-Код не доделан так как я с прохождением массивов и их прохождением по циклу(вызываются элементы которых в массиве априори нет) или я пытаюсь присвоить переменной значение элемента массива которого не существует + прочеепрочеепрочеестрашное, буду очень благодарен если кто подскажет как правильно реализовать проверку, у меня идеи уже иссякли, буду благодарен даже тому кто ткнёт меня носом в теорию, но только если это поможет мне таки написать эту программу...

Ну и если кому интересно то вот проверка из лабы, которую я давно сделал, но не могу сдать из-за отсутствия программы в которой кстати как терминалы и нетерминалы использовать решил всего-лишь a-z и A-Z соответственно

G=({X, Y, Z, K, L}, {a, b, l, =, <, >, ∧, ∨, ¬}, V, X),
где V:1) X→Y | Y=Y | Y<Y | Y>Y | K; 2) Y→Y∧Z | Y∨ Z | ε;
3) Z→ ¬ a | ¬ b| ε;4) K→ ¬ K; 5) L→ l | a | b

Проверка существования языка грамматики.
Построим последовательность приближений множества N:
N0 = Ø;
N1 = {L,Z,Y};
N2 = {L,Z,Y,X};
N3 = {L,Z,Y,X}.
Т.к. N2=N3, то N = {L,Z,Y,X}, следовательно, язык грамматики существует,
потому что начальный символ X ∈ N .

Ну если кому совсем-совсем будет интересно то вот вся лаба, но не суть lab_3 — копия.docx
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2017, 02:25
Ответы с готовыми решениями:

Реализация проверки правописания грамматики английского языка с помощью деревьев
Добрый день! ребята подскажите пожалуйста как реализовать проверки правописания...

Проверка существования языка грамматики
G=({S,R,T,X,Y}, {a,b,p,g,y}, P,S), где P: 1) S \rightarrow R|T;; 2)...

Проверка существования языка грамматики
Доброго времени суток! Помогите с проверкой существования языка грамматики. Не...

Определение типа грамматики и языка
Привет всем! Прошу очень разобраться в определении типа грамматики и языка....

Описание КС-грамматики входного языка в форме Бэкуса—Наура.
Описание КС-грамматики входного языка в форме Бэкуса—Наура. Что вообще не...

5
xoraxax
1339 / 1281 / 378
Регистрация: 05.07.2013
Сообщений: 6,136
Завершенные тесты: 1
16.05.2017, 09:27 2
Цитата Сообщение от ___Gluck Посмотреть сообщение
G=({X, Y, Z, K, L}, {a, b, l, =, <, >, ∧, ∨, ¬}, V, X),
где V:1) X→Y | Y=Y | Y<Y | Y>Y | K; 2) Y→Y∧Z | Y∨ Z | ε;
3) Z→ ¬ a | ¬ b| ε;4) K→ ¬ K; 5) L→ l | a | b
как думаешь, сколько людей, кроме тебя, понимают эти буковки?
0
KEKCoGEN
Эксперт Java
2054 / 1927 / 498
Регистрация: 28.12.2010
Сообщений: 7,715
16.05.2017, 16:48 3
Цитата Сообщение от xoraxax Посмотреть сообщение
как думаешь, сколько людей, кроме тебя, понимают эти буковки?
все кто в универе учился должны понимать)
0
xoraxax
1339 / 1281 / 378
Регистрация: 05.07.2013
Сообщений: 6,136
Завершенные тесты: 1
16.05.2017, 20:11 4
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
все кто в универе учился должны понимать
нам такую хрень не читали, например
0
___Gluck
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 2
17.05.2017, 12:13  [ТС] 5
xoraxax
Ну раз вам не читали, это не значит что не читали и другим, я на форуме нашёл много тем с упоминанием грамматик, и если тут есть знаток ТФЯ + java то для него не будет проблемой подсказать мне как правильно реализовать проверку )
0
xoraxax
17.05.2017, 14:58     Программная реализация проверки существования языка KC-грамматики
  #6

Не по теме:

ну удачи тогда, чтоли

0
17.05.2017, 14:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2017, 14:58
Привет! Вот еще темы с ответами:

Проверки существования папки
Написать программу проверки существования папки (vbscript) оооочень...

Функция проверки существования треугольника
Помогите пожалуйста написать функцию проверки существования треугольника

Цикл проверки существования процессов
Добрый день ув. форумчани. Необходима CMD команда (одна большая), которая б...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru