Лексический и синтаксический анализатор языка высокого уровня

Проектирование программы-анализатора, состоящей из двух частей: лексического анализатора, разбивающего исходный текст программы на лексемы и заполняющего таблицу имен; синтаксического анализатора, проверяющего соответствие текста заданной грамматике.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 14.06.2010
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

lSinProgress.Visible = false;

lvSinTable.Items.Clear();

int nLexNum = 0;

while (SintaxState == SinAnalizerState.InProcess)

{

sTopStack = (String) SintaxStack.Peek();

sLexeme = lvLexTable.Items[nLexNum].SubItems[0].Text;

sClass = lvLexTable.Items[nLexNum].SubItems[1].Text;

String[] subItems = {sTopStack, sLexeme, sClass};

lvSinTable.Items.Add(new ListViewItem(subItems));

if (sTopStack == "#")

{

SintaxState = (sLexeme == "#")?(SinAnalizerState.Accept):(SinAnalizerState.Error);

}

else if (sTopStack == "<S>")

{

if (sLexeme == "#")

{

SintaxStack.Pop();

}

else if (sLexeme == "PUBLIC")

{

Replace(SintaxStack, Grammatic, 1, 2);

nLexNum++;

}

else if (sLexeme == "USING")

{

Replace(SintaxStack, Grammatic, 0, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "LONG")

{

if (sLexeme == "LONG")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "INT")

{

if (sLexeme == "INT")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "(")

{

if (sLexeme == "(")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == ")")

{

if (sLexeme == ")")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == ";")

{

if (sLexeme == ";")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "{")

{

if (sLexeme == "{")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "}")

{

if (sLexeme == "}")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<CLASS_BODY>")

{

if (sLexeme == "PUBLIC")

{

Replace(SintaxStack, Grammatic, 8, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<CLASS>")

{

if (sLexeme == "CLASS")

{

Replace(SintaxStack, Grammatic, 7, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<DEF_LIST>")

{

if (sClass == "Идентификатор")

{

Replace(SintaxStack, Grammatic, 14, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<DEF>")

{

if (sLexeme == "UINT")

{

Replace(SintaxStack, Grammatic, 11, 2);

nLexNum++;

}

else if (sLexeme == "BOOL")

{

Replace(SintaxStack, Grammatic, 12, 2);

nLexNum++;

}

else if (sLexeme == "CONST")

{

Replace(SintaxStack, Grammatic, 13, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<EXPR>")

{

if (sLexeme == "(")

{

Replace(SintaxStack, Grammatic, 35, 2);

nLexNum++;

}

else if (sClass == "Идентификатор")

{

Replace(SintaxStack, Grammatic, 36, 2);

nLexNum++;

}

else if (sClass == "Число")

{

Replace(SintaxStack, Grammatic, 37, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<LET>")

{

if (sLexeme == "/")

{

Replace(SintaxStack, Grammatic, 34, 2);

nLexNum++;

}

else if (sLexeme == "*")

{

Replace(SintaxStack, Grammatic, 33, 2);

nLexNum++;

}

else if (sLexeme == "=")

{

Replace(SintaxStack, Grammatic, 32, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<NEXT_BODY>")

{

if (sLexeme == ";")

{

Replace(SintaxStack, Grammatic, 9, 2);

nLexNum++;

}

else if (sLexeme == "}")

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<NEXT_DEF>")

{

if (sLexeme == "(")

{

Replace(SintaxStack, Grammatic, 15, 2);

nLexNum++;

}

else if (sLexeme == ",")

{

Replace(SintaxStack, Grammatic, 16, 2);

nLexNum++;

}

else if (sLexeme == "=")

{

Replace(SintaxStack, Grammatic, 17, 2);

nLexNum++;

}

else if (sLexeme == ";")

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<NEXT_OPER>")

{

if (sLexeme == ";")

{

Replace(SintaxStack, Grammatic, 24, 2);

nLexNum++;

}

else if (sLexeme == "}")

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<NEXT_USING>")

{

if (sLexeme == ".")

{

Replace(SintaxStack, Grammatic, 5, 2);

nLexNum++;

}

else if (sLexeme == ";")

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<NEXT_VAR>")

{

if (sLexeme == ",")

{

Replace(SintaxStack, Grammatic, 20, 2);

nLexNum++;

}

else if (sLexeme == "=")

{

Replace(SintaxStack, Grammatic, 21, 2);

nLexNum++;

}

else if ((sLexeme == ")") || (sLexeme == ";"))

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<NEXT>")

{

if (sLexeme == ";")

{

Replace(SintaxStack, Grammatic, 2, 2);

nLexNum++;

}

else if (sLexeme == "#")

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<OPER_LIST>")

{

if ((sLexeme == "FOR") ||

(sLexeme == "CONTINUE") ||

(sLexeme == "BREAK") ||

(sLexeme == "READ") ||

(sLexeme == "WRITE") ||

(sClass == "Идентификатор"))

{

Replace(SintaxStack, Grammatic, 23, 1);

}

else if (sLexeme == "}")

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<OPERATION>")

{

if (sLexeme == "+")

{

Replace(SintaxStack, Grammatic, 38, 2);

nLexNum++;

}

else if (sLexeme == "-")

{

Replace(SintaxStack, Grammatic, 39, 2);

nLexNum++;

}

else if ((sLexeme == ")") ||

(sLexeme == ";") ||

(sLexeme == ",") ||

(sLexeme == ">") ||

(sLexeme == "<") ||

(sLexeme == "="))

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<OPERATOR>")

{

if (sLexeme == "FOR")

{

Replace(SintaxStack, Grammatic, 26, 2);

nLexNum++;

}

else if (sLexeme == "BREAK")

{

SintaxStack.Pop();

nLexNum++;

}

else if (sLexeme == "CONTINUE")

{

SintaxStack.Pop();

nLexNum++;

}

else if (sLexeme == "READ")

{

Replace(SintaxStack, Grammatic, 30, 2);

nLexNum++;

}

else if (sLexeme == "WRITE")

{

Replace(SintaxStack, Grammatic, 29, 2);

nLexNum++;

}

else if (sClass == "Идентификатор")

{

Replace(SintaxStack, Grammatic, 31, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<USING_LIST>")

{

if (sClass == "Идентификатор")

{

Replace(SintaxStack, Grammatic, 4, 2);

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<COND>")

{

if (sLexeme == "(")

{

Replace(SintaxStack, Grammatic, 41, 2);

nLexNum++;

}

else if ((sClass == "Идентификатор") ||

(sClass == "Число"))

{

Replace(SintaxStack, Grammatic, 42, 1);

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<RELATION>")

{

if (sLexeme == ">")

{

Replace(SintaxStack, Grammatic, 43, 2);

nLexNum++;

}

else if (sLexeme == "<")

{

Replace(SintaxStack, Grammatic, 44, 2);

nLexNum++;

}

else if (sLexeme == "=")

{

Replace(SintaxStack, Grammatic, 45, 2);

nLexNum++;

}

else if ((sLexeme == ")") ||

(sLexeme == ";"))

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "<VAR_LIST>")

{

if (sClass == "Идентификатор")

{

Replace(SintaxStack, Grammatic, 19, 2);

nLexNum++;

}

else if (sLexeme == ";")

{

SintaxStack.Pop();

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "=")

{

if (sLexeme == "=")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else if (sTopStack == "ID")

{

if (sClass == "Идентификатор")

{

SintaxStack.Pop();

nLexNum++;

}

else SintaxState = SinAnalizerState.Error;

}

else SintaxState = SinAnalizerState.Error;

if (SintaxState == SinAnalizerState.Error)

{

lSinProgress.Text = "ОШИБКА! Неправильный синтаксис";

lSinProgress.ForeColor = Color.Red;

}

else if (SintaxState == SinAnalizerState.Accept)

{

lSinProgress.Text = "Синтаксический анализ завершен успешно!";

lSinProgress.ForeColor = Color.Blue;

}

}

lSinProgress.Visible = true;

btnSintax.Enabled = false;

синтаксическийАнализToolStripMenuItem.Enabled = false;

}

Цель данного проекта: практическое применение теории формальных грамматик и теории автоматов для проектирования трансляторов.

Постановка задания: Спроектировать и построить лексический и синтаксический анализаторы для заданного формального языка программирования. Построить и реализовать в лексическом анализаторе распознаватель лексем с заданной структурой: Нагруженное дерево (один элемент дерева хранит один символ (букву входного алфавита) лексемы).

Учебный язык включает директиву using, функцию main(), описание переменных, констант, массива переменной длины, операторов присваивания, арифметические операции. За основу лексики, синтаксиса и семантики учебного языка принять стандарты языка программирования С#.

Рассмотренная регулярная грамматика может быть реализована автоматом с множеством состояний G: [S, I, C, E, R], где

S - состояние ожидания первого символа лексемы;

I - состояние ожидания символов идентификаторов: буквы, цифры;

С - состояние ожидания символов целой части числа;

E -состояние ошибки;

R - состояние допуска лексемы.

Автомат переходит в допустимое состояние R из состояний S, I, C по символу конца лексемы - пробел или разделительного знака. Автомат определен множеством перечисленных состояний, множеством правил [1, 2, … , 47] и множеством входных символов [00..9, A..Z, «-», «#», «(», «)», «*», «,», «.», «/», «:», «;», «{«, «}», «+», «=»], из которых символы подмножества [«-», «#», «(», «)», «*», «,», «/», «:», «;», «{«, «}», «+», «=»] являются одновременно разделительными символами и уникальными лексемами. Таблица переходов автомата распознавателя идентификаторов представлена ниже на таблице.

L

D

e

S

I

E

S

Нач. состояние

I

I

I

R

E

Ошибка

R

Допустить

Множества ВЫБОР:

ВЫБОР(48)

using

ВЫБОР(49)

public

ВЫБОР(50)

;

ВЫБОР(51)

#

ВЫБОР(52)

ID

ВЫБОР(53)

.

ВЫБОР(54)

;

ВЫБОР(55)

class

ВЫБОР(56)

public

ВЫБОР(57)

;

ВЫБОР(58)

}

ВЫБОР(59)

uint

ВЫБОР(60)

bool

ВЫБОР(61)

const

ВЫБОР(62)

ID

ВЫБОР(63)

(

ВЫБОР(64)

,

ВЫБОР(65)

=

ВЫБОР(66)

;

ВЫБОР(67)

ID

ВЫБОР(68)

,

ВЫБОР(69)

=

ВЫБОР(70)

)

ВЫБОР(71)

for break continue write read ID

ВЫБОР(72)

;

ВЫБОР(73)

}

ВЫБОР(74)

for

ВЫБОР(75)

break

ВЫБОР(76)

continue

ВЫБОР(77)

write

ВЫБОР(78)

read

ВЫБОР(79)

ID

ВЫБОР(80)

=

ВЫБОР(81)

*

ВЫБОР(82)

/

ВЫБОР(83)

(

ВЫБОР(84)

ID

ВЫБОР(85)

NUM

ВЫБОР(86)

+

ВЫБОР(87)

-

ВЫБОР(88)

ID ; ) < > =

ВЫБОР(89)

(

ВЫБОР(90)

( ID NUM

ВЫБОР(91)

>

ВЫБОР(92)

<

ВЫБОР(93)

=

ВЫБОР(94)

; )

Формальная грамматика языка программирования:

Грамматика целевого символа:

( 1) <S> -> using <USING_LIST> <NEXT>

( 2) <S> -> public <CLASS> <NEXT>

( 3) <NEXT> -> ; <S>

( 4) <NEXT> -> e

Грамматика описания using:

( 5) <USING_LIST> -> ID <NEXT_USING>

( 6) <NEXT_USING> -> . <USING_LIST>

( 7) <NEXT_USING> -> e

Грамматика описания класса:

( 8) <CLASS> -> class ID { <CLASS_BODY> }

( 9) <CLASS_BODY> -> public <DEF> <NEXT_BODY>

(10) <NEXT_BODY> -> ; <CLASS_BODY>

(11) <NEXT_BODY> -> e

Грамматика описания определения полей и методов класса:

(12) <DEF> -> uint <DEF_LIST>

(13) <DEF> -> bool <DEF_LIST>

(14) <DEF> -> const long int <DEF_LIST>

(15) <DEF_LIST> -> ID <NEXT_DEF>

(16) <NEXT_DEF> -> ( <VAR_LIST> ) { <OPER_LIST> }

(17) <NEXT_DEF> -> , <VAR_LIST>

(18) <NEXT_DEF> -> = <EXPR> <VAR_LIST>

(19) <NEXT_DEF> -> e

(20) <VAR_LIST> -> ID <NEXT_VAR>

(21) <NEXT_VAR> -> , <VAR_LIST>

(22) <NEXT_VAR> -> = <EXPR> <VAR_LIST>

(23) <NEXT_VAR> -> e

Грамматика описания списка операторов:

(24) <OPER_LIST> -> <OPERATOR> <NEXT_OPER>

(25) <NEXT_OPER> -> ; <OPER_LIST>

(26) <NEXT_OPER> -> e

Грамматика описания операторов:

(27) <OPERATOR> -> for ( ID = <EXPR> ; <COND> ; ID <LET> ) { <OPER_LIST> }

(28) <OPERATOR> -> break

(29) <OPERATOR> -> continue

(30) <OPERATOR> -> write ( <VAR_LIST> )

(31) <OPERATOR> -> read ( <VAR_LIST> )

(32) <OPERATOR> -> ID <LET>

(33) <LET> -> = <EXPR>

(34) <LET> -> * = <EXPR>

(35) <LET> -> / = <EXPR>

Грамматика описания арифметического выражения:

(36) <EXPR> -> ( <EXPR> ) <OPERATION>

(37) <EXPR> -> ID <OPERATION>

(38) <EXPR> -> NUM <OPERATION>

(39) <OPERATION> -> + <EXPR>

(40) <OPERATION> -> - <EXPR>

(41) <OPERATION> -> e

Грамматика описания условия:

(42) <COND> -> ( <COND> ) <RELATION>

(43) <COND> -> <EXPR> <RELATION>

(44) <RELATION> -> > <COND>

(45) <RELATION> -> < <COND>

(46) <RELATION> -> = = <COND>

(47) <RELATION> -> e

Управляющая таблица синтаксического анализатора

 

/

-

#

(

)

*

,

.

;

{

}

+

<

=

>

bool

break

class

const

continue

for

ID

int

long

NUM

public

read

using

write

#

 

 

Д

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(

 

 

 

В С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

)

 

 

 

 

В С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

В С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{

 

 

 

 

 

 

 

 

 

В С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

В С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<CLASS_BODY>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З(9, 2) С

 

 

 

<CLASS>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З(8, 2) С

 

 

 

 

 

 

 

 

 

 

 

<COND>

 

 

 

З(42, 2) С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З(43, 1)

 

 

З(43, 1)

 

 

 

 

<DEF_LIST>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З(15, 2) С

 

 

 

 

 

 

 

<DEF>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З(13, 2) С

 

 

З(14, 2) С

 

 

 

 

 

 

 

 

 

 

<EXPR>

 

 

 

З(36, 2) С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З(37, 2) С

 

 

З(38, 2) С

 

 

 

 

<LET>

З(35, 2) С

 

 

 

 

З(34, 2) С

 

 

 

 

 

 

 

З(33, 2) С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<NEXT_BODY>

 

 

 

 

 

 

 

 

З(10, 2) С

 

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<NEXT_DEF>

 

 

 

З(16, 2) С

 

 

З(17, 2) С

 

В

 

 

 

 

З(18, 2) С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<NEXT_OPER>

 

 

 

 

 

 

 

 

З(25, 2) С

 

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<NEXT_USING>

 

 

 

 

 

 

 

З(6, 2) С

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<NEXT_VAR>

 

 

 

 

В

 

З(21, 2) С

 

В

 

 

 

 

З(22, 2) С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<NEXT>

 

 

В

 

 

 

 

 

З(3, 2) С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<OPER_LIST>

 

 

 

 

 

 

 

 

 

 

В

 

 

 

 

 

З(24, 1)

 

 

З(24, 1)

З(24, 1)

З(24, 1)

 

 

 

 

З(24, 1)

 

З(24, 1)

<OPERATION>

 

З(40, 2) С

 

 

В

 

 

 

В

 

 

З(39, 2) С

В

В

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<OPERATOR>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В С

 

 

В С

З(27, 2) С

З(32, 2) С

 

 

 

 

З(31, 2) С

 

З(30, 2) С

<RELATION>

 

 

 

 

В

 

 

 

В

 

 

 

З(45, 2) С

З(46, 2) С

З(44, 2) С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<S>

 

 

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З(2, 2) С

 

З(1, 2) С

 

<USING_LIST>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

З(5, 2) С

 

 

 

 

 

 

 

<VAR_LIST>

 

 

 

 

 

 

 

 

В

 

 

 

 

 

 

 

 

 

 

 

 

З(20, 2) С

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

В С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ID

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В С

 

 

 

 

 

 

 

int

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В С

 

 

 

 

 

 

long

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В С

 

 

 

 

 


Подобные документы

  • Написание программы, которая выполняет лексический и синтаксический анализ входного языка программирования, порождает таблицу лексем с указанием их типов и значений, а также строит синтаксическое дерево; текст входного языка вводится с клавиатуры.

    курсовая работа [761,5 K], добавлен 23.02.2012

  • Методы грамматического разбора при разработке учебного транслятора. Проектирование лексического анализатора и магазинного автомата. Программная реализация синтаксического анализатора текстового языка высокого уровня. Разработка модуля интерпретации.

    курсовая работа [697,2 K], добавлен 06.01.2013

  • Транслятор как программа или техническое средство, выполняющее трансляцию программы. Рассмотрение основных особенностей постройки лексического анализатора. Знакомство с этапами разработки транслятора с ограниченного подмножества языка высокого уровня.

    курсовая работа [580,5 K], добавлен 06.08.2013

  • Разработка технического задания на проектирование, определение требований к программе. Предварительный выбор метода решения синтаксического анализатора, проектирование программного приложения, конфигурация технических средств программы и её тестирование.

    курсовая работа [28,5 K], добавлен 28.06.2011

  • Организация таблицы идентификаторов, ее содержание и назначение. Метод бинарного дерева и цепочек. Проектирование лексического анализатора и схема распознавателя. Построение дерева вывода, синтаксический анализатор. Анализ результатов работы программы.

    курсовая работа [1,0 M], добавлен 25.12.2014

  • Структура, классификация и требования к реализации компилятора. Проектирование и реализация анализирующей части компилятора языка С++. Способы реализации лексического анализа. Алгоритм работы синтаксического анализатора. Принципы программной реализации.

    курсовая работа [774,2 K], добавлен 26.01.2013

  • Создание алгоритма для построения синтаксического анализатора полиномов и его реализация в среде Visual Studio 2005 на языке программирования C#. Программное решение задачи поиска максимального числа единиц в бинарном представлении простых чисел.

    курсовая работа [723,5 K], добавлен 04.10.2010

  • Программная реализация синтаксического анализатора произвольного текста. Матрица и дерево переходов для программы. Код программы с построчным комментарием. Порядок запуска среды разработки Visual Studio. Интерфейс и номера Лихтенштейна, скриншот.

    контрольная работа [855,1 K], добавлен 13.02.2014

  • Создание транслятора, обрабатывающего код программы на языке Паскаль и за счет эквивалентных операторов генерирующего программу на Си. Особенности внешней спецификации и работы лексического анализатора. Структура программы, вывод результатов на экран.

    курсовая работа [254,0 K], добавлен 02.07.2011

  • Описание синтаксиса и семантики входного языка. Описание типов лексем, определение их синтаксиса. Построение диаграммы лексического анализатора, а также его таблицы, тестирование. Построение КС-грамматики входного языка. Описание промежуточного языка.

    курсовая работа [83,0 K], добавлен 23.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.