Exemplo n.º 1
0
def _NumberDFA():
    dfa = DFA()
    dfa.addStates(["number_0", "NUMBER"])
    dfa.state = dfa.states[0]
    dfa.final = dfa.states[-1]
    dfa.addTransition("number_0", "NUMBER", DIGITS)
    dfa.addTransition("NUMBER", "NUMBER", DIGITS)
    return dfa
Exemplo n.º 2
0
def _IdentifierDFA():
    dfa = DFA()
    dfa.addStates(["id0", "idfin"])
    dfa.state = dfa.states[0]
    dfa.final = dfa.states[-1]
    dfa.addTransition("id0", "idfin", LETTERS + "_")
    dfa.addTransition("idfin", "idfin", DIGITS + LETTERS + "_")
    return dfa
Exemplo n.º 3
0
def _LineCommentDFA():
    dfa = DFA()
    dfa.addStates(["lc0", "lc1", "lcloop", "lcfin"])
    dfa.state = dfa.states[0]
    dfa.setFinal("lcfin")
    dfa.addTransition("lc0", "lc1", "-")
    dfa.addTransition("lc1", "lcloop", "-")
    dfa.addTransition("lcloop", "lcloop", LETTERS + DIGITS + OTHERS + " \t")
    dfa.addTransition("lcloop", "lcfin", "\n")
    return dfa
Exemplo n.º 4
0
def _LiteralDFA():
    dfa = DFA()
    dfa.addStates(["l0", "lloop", "lescape", "lfin"])
    dfa.state = dfa.states[0]
    dfa.setFinal("lfin")
    dfa.addTransition("l0", "lloop", "\"")
    loopchars = (LETTERS + DIGITS + OTHERS + " \n\r\t").replace("\\", "").replace("\"", "")
    dfa.addTransition("lloop", "lloop", loopchars)
    dfa.addTransition("lloop", "lescape", "\\")
    dfa.addTransition("l0", "lescape", "\\")
    dfa.addTransition("lescape", "lloop", "ntr\"\'\\")
    dfa.addTransition("lloop", "lfin", "\"")
    return dfa
Exemplo n.º 5
0
def _MultiLineCommentDFA():
    dfa = DFA()
    dfa.addStates(["q0", "q1", "q2", "q3", "qloop", "q4", "q5"])
    dfa.state = "q0"
    dfa.setFinal("q5")
    dfa.addTransition("q0", "q1", "-")
    dfa.addTransition("q1", "q2", "-")
    dfa.addTransition("q2", "q3", "[")
    dfa.addTransition("q3", "qloop", "[")
    loopchars = (LETTERS + DIGITS + OTHERS + " \t\n\r").replace("]", "")
    dfa.addTransition("qloop", "qloop", loopchars)
    dfa.addTransition("qloop", "q4", "]")
    dfa.addTransition("q4", "qloop", loopchars)
    dfa.addTransition("q4", "q5", "]")

    return dfa