Simple Regular Expresion ?
2 отговора
106 прегледа
Simple Regular Expresion ?
Трябва ми регулярен израз за прости математически изрази.
( с цели числа върши работа )
Но да минават и скобки през него ( балансирани разбира се )
примерно :
'-'|d|d* '+' | '-' | '*' | '/' | '(' | '-' | d|d* ')' E... ne moga da go izmislia veche 2 h.
БЛАГОДАРЯ ! ! !
( с цели числа върши работа )
Но да минават и скобки през него ( балансирани разбира се )
примерно :
'-'|d|d* '+' | '-' | '*' | '/' | '(' | '-' | d|d* ')' E... ne moga da go izmislia veche 2 h.
БЛАГОДАРЯ ! ! !
аз пък ще ти отговоря
с регулярен израз няма да стане, трябва ти контекстно-свободна граматика. Например граматиката на аритметичните изрази:
E -> T | E + T | E - T
T -> F | T * F | T / F
F -> 4ISLO | ID | ( E )
тук -> означава "поражда", | е знак за дизюнкция (ти си знаеш какво е), 4ISLO и ID се разпознават с регулярни изрази (и тях може да си ги измислиш, ако ти трябват).
Ако лявата рекурсия ти пречи (по метода на рекурсивното спускане влизаш в безкрай рекурсия и алгоритъма забива), я заменяш с итерация:
E -> T | T {+ T}[*] | T {- T}[*]
T -> F | F {* F}[*] | T {/ F}[*]
F -> 4ISLO | ID | ( E )
[*] е знака за празна итерация (звездичка-горен индекс в някои нотации), т.е. може да присъства 0 или повече пъти. така граматиката става разширена контекстно-свободна, но машинната реализация е детска работа.
stoj, ta gledaj
E -> T | E + T | E - T
T -> F | T * F | T / F
F -> 4ISLO | ID | ( E )
тук -> означава "поражда", | е знак за дизюнкция (ти си знаеш какво е), 4ISLO и ID се разпознават с регулярни изрази (и тях може да си ги измислиш, ако ти трябват).
Ако лявата рекурсия ти пречи (по метода на рекурсивното спускане влизаш в безкрай рекурсия и алгоритъма забива), я заменяш с итерация:
E -> T | T {+ T}[*] | T {- T}[*]
T -> F | F {* F}[*] | T {/ F}[*]
F -> 4ISLO | ID | ( E )
[*] е знака за празна итерация (звездичка-горен индекс в някои нотации), т.е. може да присъства 0 или повече пъти. така граматиката става разширена контекстно-свободна, но машинната реализация е детска работа.
stoj, ta gledaj