Unit MathExprParser

DescriptionusesClasses, Interfaces, Objects and RecordsFunctions and ProceduresTypesConstantsVariables

Description

Parser wyrazenia matematycznego. Zrobiony specjalnie aby obejmowac mozliwie wygodna skladnia wszystko co moze zaoferowac klasa TMathExpr.

Gramatyka w EBNF : (wiele komentarzy jest w dokumentacji [http://vrmlengine.sourceforge.net/glplotter_and_gen_function.php#section_math_expr_syntax]. Usunalem je stad zeby nie duplikowac informacji.)

czynnik = NAZWA_ZMIENNEJ | STALA | "-" czynnik | "(" wyrazenie_math ")" | NAZWA_FUNKCJI [ "(" wyrazenie_math [{"," wyrazenie_math}] ")" ] | "[" wyrazenie_math operator_relacyjny wyrazenie_math "]" skladnik = czynnik [{operator_multiplikatywny czynnik}] wyrazenie_math = skladnik [{operator_addytywny skladnik}] operator_multiplikatywny = "ˆ" | "*" | "/" | "%" operator_addytywny = "+" | "-" operator_relacyjny = "<" | ">" | "<=" | ">=" | "=" | "<>"

(czesc rozwiazywana przez Lexer :) NAZWA_ZMIENNEJ = LITERA [{LITERA | CYFRA}] STALA = "pi" | "enat" | CYFRA [{CYFRA}] ["." CYFRA [{CYFRA}] ] NAZWA_FUNKCJI = (see glplotter and gen_function docs) LITERA = nieformalnie 'a' .. 'z' | 'A' .. 'Z' | "_" (tak, znaku podkreslenia mozna uzyc wszedzie tam gdzie litery) CYFRA = '0' .. '9'

(token = terminal w czesci gramatyki rozwiazywanej przez parser lub nieterminal w czesci gramatyki rozwiazywanej przez Lexer. Generalnie pomiedzy kazdymi dwoma tokenami musi byc przynajmniej jeden bialy znak - spacja, #10, #13, lub tab. Ale sa wyjatki gdy mozna jednoznacznie rozpoznac koniec jednego tokenu, np. gdy dwa tokeny pochodza z dwoch roznych zbiorow - jeden sposrod cyfr/liter/_ a drugi z reszty. W razie watpliwosci Lexer bedzie pobieral tokeny zachlannie. )

uses

Overview

Classes, Interfaces, Objects and Records

Name Description
Class EMathParserError  

Functions and Procedures

function ParseMathExpr(const S: string): TMathExpr;
function EvalConstMathExpr(const S: string): Float;

Types

EMathSyntaxError = MathExprLexer.EMathSyntaxError;

Description

Functions and Procedures

function ParseMathExpr(const S: string): TMathExpr;

Creates and returns instance of TMathExpr, that represents parsed tree of expression in S.

function EvalConstMathExpr(const S: string): Float;

This can be used as a great replacement for StrToFloat. This takes a string with any constant mathematical expression, parses it and calculates (with all variable names undefined, i.e. EUndefinedVariable will be raised if expression will try to use some variable name).

Types

EMathSyntaxError = MathExprLexer.EMathSyntaxError;

Reexported in this unit, so that the identifier EMathSyntaxError will be visible when using this unit.


Generated by PasDoc 0.10.0 on 2008-02-25 00:00:37