Exemple #1
0
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import elementtree.ElementTree as ET
import os, sys

sys.path.append(os.getcwd().split('slps')[0] + 'slps/shared/python')
import BGF

singles = (BGF.Empty(), BGF.Epsilon(), BGF.Any())


def ntd(x, d):
    nt = BGF.Nonterminal()
    nt.setName(x)
    w = d()
    w.setExpr(BGF.Expression(nt))
    return BGF.Expression(w)


if __name__ == "__main__":
    g = BGF.Grammar()
    prod = 400
    term = 150
    for i in range(0, prod):
        p = BGF.Production()
        p.setNT('nt' + str(i))
        p.setExpr(BGF.Expression(singles[i % 3]))
        g.addProd(p)
        p = BGF.Production()
        p.setNT('nt' + str(i))
        a = ntd('nt' + str((i + 1) % prod), BGF.Plus)
Exemple #2
0
     if alt[cx][-1] == '+':
         sym = BGF.Plus()
         sym.setExpr(BGF.Nonterminal())
         sym.data.setName(alt[cx][:-1])
     elif alt[cx][-1] == '*':
         sym = BGF.Star()
         sym.setExpr(BGF.Nonterminal())
         sym.data.setName(alt[cx][:-1])
     elif alt[cx][-1] == '?':
         sym = BGF.Optional()
         sym.setExpr(BGF.Nonterminal())
         sym.data.setName(alt[cx][:-1])
     elif alt[cx] in layouts:
         print 'Occurrence of layout nonterminal', alt[
             cx], 'is disregarded.'
         sym = BGF.Epsilon()
     else:
         sym = BGF.Nonterminal()
         sym.setName(alt[cx])
     cx += 1
     continue
 if alt[cx] == 'lex':
     cx += 1
     continue
 if alt[cx][0].islower():
     typ = sym
     sym = BGF.Selectable()
     sym.setExpr(typ)
     sym.setName(alt[cx])
     cx += 1
     continue