# [Tutor] regular expressions

Servando Garcia servando at mac.com
Thu Jul 14 22:41:56 CEST 2005

```Hello List
I am working on creating a Domain Specific Language that will solve
partial differential equations. The user will enter a equation in
pseudo code format.  I will need to parse the equation. Here is the BNF
for the equation
<Vector>	:=(<Seq>)
<Seq>		:=<Int>,<Seq> |<Int>
<Body>		:=<Left> = <Right>
<Left>		:=A(<Svector>)
<Svector>	:=(<Sseq>)
<Sseq>		:= <Id> , <Sseq> | <Id>
<Id>		:= <Letter>| <Id><Letter>|<Id><Digit>
<Letter>	:=<A-Za-z>
<Digit>		:=<0-9>
<Right>		:=<Stencil>+<Func>
<Stencil>	:=<Factor>+<Stencil>|<Factor>
<Factor>	:=<Float>A(<Svector>+<Vector>)

It was decided to use Spark for the base for the compiler. To use Spark
all that is need is to just add a new class with the above BNF to parse
the equation. There is a good paper called "Charming the Python" that
was used as a template. The problem I am having is, how do I code the
Non-Terminals of the BNF. Terminal states like <Letter> are easy to
code using regular expression. Here is my function for state   <Letter>

def t_Letter(self,s):
r"[A-Za-z]+"
self.rv.append(Token('Letter',s))

Servando Garcia
251 Highway 46 N
Sheridan,Ar.72150
(870)942-1854  Home
(870)917-8963  Cell
(866) 228-8794  Fax
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 1400 bytes
Desc: not available
Url : http://mail.python.org/pipermail/tutor/attachments/20050714/88b2ae4b/attachment.bin
```