diff options
Diffstat (limited to 'automata_operadores.py')
-rw-r--r-- | automata_operadores.py | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/automata_operadores.py b/automata_operadores.py new file mode 100644 index 0000000..02d0ff9 --- /dev/null +++ b/automata_operadores.py @@ -0,0 +1,109 @@ +class automata_operador: + int stateN = 0 + int isAccepted(char str[]): + + int len = len(str) + + for i in len: + if (stateN == 0): + start(str[i]) + else: + if (stateN == 1): + state1(str[i]) + else: + if (stateN == 2): + state2(str[i]) + else: + if (stateN == 3): + state3(str[i]) + else: + if (stateN == 4): + state4(str[i]) + else: + if (stateN == 5): + state5(str[i]) + else: + if (stateN == 6): + state6(str[i]) + else: + if (stateN == 7): + state7(str[i]) + else: + if (stateN == 8): + state8(str[i]) + else: + return 0 + + if (stateN == 1 or stateN == 7 or stateN == 8 or stateN == 2 or stateN == 3 or stateN == 6): + return 1 + else: + return 0 + + def start(char c): + if(c == '=' or c == '>' or c == '<' or c == '/' or c == '*' or c == '%' or c == '!'): + stateN = 1 + else: + if(c == '&'): + stateN = 4 + else: + if(c == '|'): + stateN = 5 + else: + if(c == '-'): + stateN = 6 + else: + if(c == '+'): + stateN = 3 + else + stateN = -1 + + def state1(char c): + if(c == '='): + stateN = 2 + else: + stateN = -1 + + def state2(char c): + stateN = -1 + + def state3(char c): + if(c == '+'): + stateN = 7 + else: + if(c == '=') + stateN = 2 + else: + stateN = -1 + + def state4(char c): + if(c == '&'): + stateN = 2 + else: + stateN = -1 + + def state5(char c): + if(c == '|'): + stateN = 2 + else: + stateN = -1 + + def state6(char c): + if(c == '-'): + stateN = 8 + else: + if(c == '=') + stateN = 2 + else + stateN = -1 + + def state7(char c): + stateN = -1 + + def state8(char c): + stateN = -1 + + bool verified(char* token): + if (isAccepted(token)): + return true + else: + return false |