Example #1
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
Example #2
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
Example #3
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