Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Olga1994
0 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 24
1

Построить синтаксический анализатор

05.06.2013, 09:37. Просмотров 773. Ответов 2
Метки нет (Все метки)

нужно построить синтаксический анализатор..как преобразовать эту программу...чтобы она компилировалась на простом си?
C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication2
{
    class SyntaxAnalyzer
    {
        public SyntaxAnalyzer()
        {
        }
        public bool checkVariable(string str)
        {
            if ((str.Length == 2) && char.IsLetter(str[0]) && (str[1] == ' '))
                return true;
            Console.WriteLine("Variable is not a letter+space! \'" + str + "\'");
            return (false);
        }
        public bool checkLeftValue(string str)
        {
            return checkVariable(str);
        }
        public bool checkRightValue(string str)
        {
            string pattern = @"[\+\-\*]";
            Regex rgx = new Regex(pattern);
            Match match = rgx.Match(str);
            if (match.Success)
            {
                int index = match.Index;
                string s1 = str.Substring(0, index);
                string s2 = str.Substring(index + 1);
                //Console.WriteLine(s1);
                //Console.WriteLine(s2);
                return (checkVariable(s1) && checkVariable(s2));
            }
            //Console.WriteLine(str);
            return (checkVariable(str));
        }
        public bool checkAssign(string str)
        {
            int index = str.IndexOf(":=", 0);
            if (index == -1)
            {
                Console.WriteLine("Wrong assignment! \'" + str + "\'");
                return (false);
            }
            string s1 = str.Substring(0, index);
            string s2 = str.Substring(index + 2);
            //Console.WriteLine(s1);
            //Console.WriteLine(s2);            
            return (checkLeftValue(s1) && checkRightValue(s2));
        }
        public bool checkLinearProgram(string str)
        {
            int i = str.IndexOf(';', 0);
            if (i == -1)
                return (checkAssign(str));
            string s1 = str.Substring(0, i);
            string s2 = str.Substring(i + 1);
            //Console.WriteLine(s1);
            //Console.WriteLine(s2);            
            return (checkAssign(s1) && checkLinearProgram(s2));
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            string prog = "X :=A ;Y :=X +A ;I :=X -X ;Z :=Z *G ";
            SyntaxAnalyzer sa = new SyntaxAnalyzer();
            Console.WriteLine("Checking, if proram is linear program:");
            if (sa.checkLinearProgram(prog))
                Console.WriteLine("yes!");
            else
                Console.WriteLine("no!");
            Console.ReadKey();
        }
    }
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 09:37
Ответы с готовыми решениями:

Построить синтаксический анализатор для определяемого в словаре понятия линейная программа
1.Определить, пуст ли язык L(G) для заданной грамматики G. 2.Построить синтаксический анализатор...

Синтаксический анализатор на си
нужно написать вот такую программу с рекурсией на си: Вывести значение логического выражения,...

Рекурсия. Синтаксический анализатор
Проверить правильность расстановки скобок в строке S. Текст в строке S определяется следующим...

Синтаксический анализатор. Рекурсия
Составить программу, которая реализует синтаксический анализатор для понятия идентификатор, где ...

Синтаксический анализатор (ввести формулу и проверить правильность записи)
Объясните,как написать эту программу. Ввести формулу и проверить правильность записи. Формула...

2
dstat
36 / 38 / 7
Регистрация: 01.06.2011
Сообщений: 238
05.06.2013, 10:40 2
легче всего взять алгоритм и с нуля его реализовать/найти исходники на том языке, на каком нужно
0
Olga1994
0 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 24
07.06.2013, 21:14  [ТС] 3
Цитата Сообщение от dstat Посмотреть сообщение
легче всего взять алгоритм и с нуля его реализовать/найти исходники на том языке, на каком нужно
Пожалуйста, кто-нибудь может помочь?(
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 21:14

Построить синтаксический анализатор
Построить синтаксический анализатор для понятия “отношение”, используя рекурсию. <отношение> :=...

построить синтаксический анализатор для понятия идентификатор
Доброго времени суток!:) Помогите пож-ста....нужно написать программу с помощью рекурсии вот...

Построить синтаксический анализатор для понятия идентификатор
Построить синтаксический анализатор для понятия идентификатор. идентификатор. :: = {буква ...


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

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

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