Разработка языка представления математических моделей - Программная система допускового проектирования радиоэлектронных аппаратов

Для обеспечения возможности ввода пользователем математических формул в розроблюване программное обеспечение было разработано собственный язык представления математических текстов и специализированное лингвистическое обеспечение способно интерпретировать текстовое описание математической модели на этом языке в последовательность команд для их дальнейшей обработки программным обеспечениям.

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

Разрабатываемый язык подобен языку описания математических текстов такой известной системы как MatLab. Он формализированной и описывается в форме Бэкуса - Наура (БНФ) следующим образом:

<ExprCTRL> ::= <FunctionCTRL>

<ExprRavno> ::= <Variable> '=' <MathExpr> [<Comparison> <MathExpr>]

<Comparison> ::= '=' | '>' | '<' | '>=' | '<=' | '<>'

<MathExpr> ::= <Term> {<Operator1> <Term>}

<Operator1> ::= '+' | '-' | 'or' | 'xor'

<Term> ::= <Factor> {<Operator2> <Factor>}

<Operator2> ::= '*' | '/' | '^' | '%'|

<Factor> ::= <UnaryOp> <Factor> | <Base> ['^' <Factor>]

<UnaryOp> ::= '+' | '-' | '=+'| '=-'

<Base> ::= <Variable> | <Function> | <Number> | '(' <MathExpr> ')'

<Function> ::= <FuncName> '(' <MathExpr> ')'

<FunctionCTRL> ::= <FuncNameCTRL> ['(' <MathExpr> {','<MathExpr>} ')']

<FuncName> ::= 'sin' | 'cos' | 'ln'

<FuncNameCTRL> ::= 'for'| 'if'

<Variable> ::= <Letter> {<Letter> | <digit>}

<Letter> ::= 'A' | ... | 'Z' | 'a' | ... | 'z' | '_'

<digit> ::= '0' | ... | '9'

<Number> ::= <digit> {<digit>} ['.' <digit> {<digit>}]

[('E' | 'e') ['+' | '-'] <digit> {<digit>}]

Формы Бэкуса-наура (БНФ) традиционно применяются при описании грамматики формальных языков (в том числе и словно программирование). Эти формы достаточно просто интерпретируются, отличаются лаконичностью и точностью. Они состоят из доступных пониманию буквопечатающих, что называются нетерминальними и терминальными символами. На особенное внимание в БНФ заслуживает символ '::=', который переводится как "СОСТОИТ Из". Определение языковой конструкции в БНФ допускает размещение какого-либо нетерминального символа слева от символа '::='.

В правой части формы размещается последовательность нетерминальних и терминальных символов, которые отображают структуру определяемого понятия. Терминальные символы не требуют расшифровки (дополнительных БНФ), поскольку являются конструкциями описываемого языка программирования. Некоторые элементы в рамках БНФ заключаются в прямых скобках. Так в этой нотации обозначаются те элементы описываемой синтаксической конструкции, которые могут быть отсутствующими, а в круглых скобках - те которые могут повторяться огромное количество раз.

Похожие статьи




Разработка языка представления математических моделей - Программная система допускового проектирования радиоэлектронных аппаратов

Предыдущая | Следующая