Грамматика файла проекта

Ниже представлен исходный текст грамматики файла проекта для генератора синтаксических анализаторов Bison. Единственное замечание, из файла удалено всё, что непосредственно вставляется в исходный код генерируемой программы (смотрите описание формата файла для анализатора).

%token  Identifier
%token  StringValue

%token  PROJECT
%token  END
%token  MODULES
%token  IN
%token  COMPILER
%token  LINKER

%token  IF
%token  THEN
%token  ELSE
%token  CASE
%token  OF

%token  SEMICOLON
%token  COLON
%token  ASSIGN
%token  COMMA
%token  POINT

%token  EQUIL
%token  NOTEQUIL
%token  GREATER
%token  GREATEROREQUIL
%token  LESS
%token  LESSOREQUIL

%%

/*
Файл проекта не может быть пустым.
*/
ProjectFile:            PROJECT Identifier SEMICOLON StatementsList END POINT
StatementsList:         Statement
                |       StatementsList Statement
Statement:              SEMICOLON
                |       IfThenStatement SEMICOLON
                |       CaseOfStatement SEMICOLON
                |       ModulesSection
                |       DefinesSection

IfThenStatement:        IfThenEnd
                |       IfThenElseEnd
IfThenEnd:              IF Expression THEN StatementsList END
IfThenElseEnd:          IF Expression THEN StatementsList ELSE StatementsList END
Expression:             Value Relation Value
Relation:               EQUIL
                |       NOTEQUIL
                |       GREATER
                |       GREATEROREQUIL
                |       LESS
                |       LESSOREQUIL

CaseOfStatement:        CaseEnd
                |       CaseElseEnd
CaseEnd:                CASE Identifier OF CaseList END
CaseElseEnd:            CASE Identifier OF CaseList ELSE StatementsList END
CaseList:               CaseString
                |       CaseString CaseList
CaseString:             CasePoint SEMICOLON
CasePoint:              Value COLON StatementsList END

ModulesSection:         MODULES ModulesList SEMICOLON
ModulesList:            ModuleDeclaration
                |       ModuleDeclaration COMMA ModulesList
ModuleDeclaration:      Identifier IN StringValue

DefinesSection:         DefineStatement SEMICOLON
                |       COMPILER DefineStatement SEMICOLON
                |       LINKER DefineStatement SEMICOLON
DefineStatement:        Identifier ASSIGN Value
Value:                  StringValue
                |       Identifier
%%

Смотрите так же: описание файла проекта.

© 2006-2009 Сикорски, sicorski@madus.org, ICQ: 347183