This project is a HTTP request lexic validator developed in Python 3 utilizing the automathon
library to create a Finite Automaton. The validator checks the syntax of HTTP requests according to versions 1.0 and 1.1.
The following image is a simplified visualization of implemented automata.
The automata file .jff
can be open using JFLAP.
You can find the full explained implementation in the Jupyter file.
An automata is defined by M = (Σ, Q, δ, q0, F)
Alphabet Σ: {'S', '/', 'f', 'i', 'y', 'Q', '5', '3', 'o', 'L', 'K', 'Y', 'l', 'N', '2', 'X', 'E', 'r', 'v', 'C', 'V', ')', ',', 'A', 'q', 'F', 'H', '-', 'B', '*', '_', 'G', 'a', '(', 'c', 'R', 'j', ';', ':', '?', 'U', '.', 'm', 'd', 'e', '=', 'h', 'p', 'b', 'x', 'W', ' ', '4', 'Z', '\r', 'P', 'g', 's', 'J', '1', 'O', '9', 'T', 't', 'n', 'z', '0', 'M', '+', 'I', '\n', 'D', '7', 'w', '6', 'u', '8', 'k'}
States Q: {'q44', 'q33', 'q12', 'q6', 'q0', 'q17', 'q61', 'q20', 'q53', 'q70', 'q41', 'q39', 'q15', 'q26', 'q13', 'q24', 'q40', 'q5', 'q56', 'q21', 'q31', 'qf', 'q71', 'q7', 'q52', 'q63', 'q32', 'q45', 'q38', 'q11', 'q69', 'q43', 'q46', 'q1', 'q72', 'q2', 'q76', 'q65', 'q42', 'q35', 'q8', 'q9', 'q10', 'q14', 'q30', 'q23', 'q64', 'q3', 'q36', 'q66', 'q60', 'q73', 'q29', 'q25', 'q59', 'q16', 'q28', 'q18', 'q68', 'q75', 'q48', 'q27', 'q58', 'q62', 'q22', 'q54', 'q74', 'q4', 'q50', 'q37', 'q57', 'q19', 'q55', 'q34', 'q49', 'q47', 'q67'}
Initial State q0: q0
Final States F: {'qf'}
Transitions δ: transictions is definied based in the following table
State | Symbol | Next State |
---|---|---|
q0 | O | q12 |
q0 | G | q1 |
q0 | H | q8 |
q0 | P | q2 |
q0 | P | q19 |
q0 | T | q28 |
q0 | D | q22 |
q1 | E | q3 |
q10 | D | q11 |
q11 | (space) | q33 |
q12 | P | q13 |
q13 | T | q14 |
q14 | I | q15 |
q15 | O | q16 |
q16 | N | q17 |
q17 | S | q18 |
q18 | (space) | q33 |
q18 | (space) | q35 |
q19 | U | q20 |
q2 | O | q5 |
q20 | T | q21 |
q21 | (space) | q33 |
q22 | E | q23 |
q23 | L | q24 |
q24 | E | q25 |
q25 | T | q26 |
q26 | E | q27 |
q27 | (space) | q33 |
q28 | R | q29 |
q29 | A | q30 |
q3 | T | q4 |
q30 | C | q31 |
q31 | E | q32 |
q32 | (space) | q33 |
q33 | S | q34 |
q33 | / | q34 |
q33 | f | q34 |
q33 | i | q34 |
q33 | e | q34 |
q33 | y | q34 |
q33 | Q | q34 |
q33 | 5 | q34 |
q33 | h | q34 |
q33 | 3 | q34 |
q33 | o | q34 |
q33 | b | q34 |
q33 | p | q34 |
q33 | x | q34 |
q33 | L | q34 |
q33 | W | q34 |
q33 | K | q34 |
q33 | Y | q34 |
q33 | 4 | q34 |
q33 | l | q34 |
q33 | N | q34 |
q33 | Z | q34 |
q33 | 2 | q34 |
q33 | X | q34 |
q33 | P | q34 |
q33 | E | q34 |
q33 | g | q34 |
q33 | s | q34 |
q33 | r | q34 |
q33 | v | q34 |
q33 | C | q34 |
q33 | J | q34 |
q33 | V | q34 |
q33 | 1 | q34 |
q33 | O | q34 |
q33 | 9 | q34 |
q33 | T | q34 |
q33 | A | q34 |
q33 | q | q34 |
q33 | t | q34 |
q33 | n | q34 |
q33 | F | q34 |
q33 | z | q34 |
q33 | 0 | q34 |
q33 | H | q34 |
q33 | - | q34 |
q33 | B | q34 |
q33 | M | q34 |
q33 | I | q34 |
q33 | D | q34 |
q33 | 7 | q34 |
q33 | w | q34 |
q33 | G | q34 |
q33 | a | q34 |
q33 | 6 | q34 |
q33 | c | q34 |
q33 | R | q34 |
q33 | j | q34 |
q33 | u | q34 |
q33 | U | q34 |
q33 | . | q34 |
q33 | 8 | q34 |
q33 | m | q34 |
q33 | k | q34 |
q33 | d | q34 |
q34 | S | q34 |
q34 | / | q34 |
q34 | f | q34 |
q34 | i | q34 |
q34 | e | q34 |
q34 | y | q34 |
q34 | Q | q34 |
q34 | 5 | q34 |
q34 | h | q34 |
q34 | 3 | q34 |
q34 | o | q34 |
q34 | b | q34 |
q34 | p | q34 |
q34 | x | q34 |
q34 | L | q34 |
q34 | W | q34 |
q34 | K | q34 |
q34 | Y | q34 |
q34 | 4 | q34 |
q34 | l | q34 |
q34 | N | q34 |
q34 | Z | q34 |
q34 | 2 | q34 |
q34 | X | q34 |
q34 | P | q34 |
q34 | E | q34 |
q34 | g | q34 |
q34 | s | q34 |
q34 | r | q34 |
q34 | v | q34 |
q34 | C | q34 |
q34 | J | q34 |
q34 | V | q34 |
q34 | 1 | q34 |
q34 | O | q34 |
q34 | 9 | q34 |
q34 | T | q34 |
q34 | A | q34 |
q34 | q | q34 |
q34 | t | q34 |
q34 | n | q34 |
q34 | F | q34 |
q34 | z | q34 |
q34 | 0 | q34 |
q34 | H | q34 |
q34 | - | q34 |
q34 | B | q34 |
q34 | M | q34 |
q34 | I | q34 |
q34 | D | q34 |
q34 | 7 | q34 |
q34 | w | q34 |
q34 | G | q34 |
q34 | a | q34 |
q34 | 6 | q34 |
q34 | c | q34 |
q34 | R | q34 |
q34 | j | q34 |
q34 | u | q34 |
q34 | U | q34 |
q34 | . | q34 |
q34 | 8 | q34 |
q34 | m | q34 |
q34 | k | q34 |
q34 | d | q34 |
q34 | (space) | q37 |
q35 | * | q36 |
q36 | (space) | q37 |
q37 | H | q38 |
q38 | T | q39 |
q39 | T | q40 |
q4 | (space) | q33 |
q40 | P | q41 |
q41 | / | q42 |
q42 | 1 | q43 |
q43 | . | q44 |
q44 | 0 | q45 |
q44 | 1 | q46 |
q45 | λ | q47 |
q45 | λ | q71 |
q46 | λ | q48 |
q46 | λ | q72 |
q47 | \n | q49 |
q48 | \n | q50 |
q49 | S | q52 |
q49 | f | q52 |
q49 | i | q52 |
q49 | e | q52 |
q49 | y | q52 |
q49 | Q | q52 |
q49 | 5 | q52 |
q49 | h | q52 |
q49 | 3 | q52 |
q49 | o | q52 |
q49 | b | q52 |
q49 | p | q52 |
q49 | x | q52 |
q49 | L | q52 |
q49 | W | q52 |
q49 | K | q52 |
q49 | Y | q52 |
q49 | 4 | q52 |
q49 | l | q52 |
q49 | N | q52 |
q49 | Z | q52 |
q49 | 2 | q52 |
q49 | X | q52 |
q49 | P | q52 |
q49 | E | q52 |
q49 | g | q52 |
q49 | s | q52 |
q49 | r | q52 |
q49 | v | q52 |
q49 | C | q52 |
q49 | J | q52 |
q49 | V | q52 |
q49 | 1 | q52 |
q49 | O | q52 |
q49 | 9 | q52 |
q49 | T | q52 |
q49 | A | q52 |
q49 | q | q52 |
q49 | t | q52 |
q49 | n | q52 |
q49 | F | q52 |
q49 | z | q52 |
q49 | 0 | q52 |
q49 | H | q52 |
q49 | - | q52 |
q49 | B | q52 |
q49 | M | q52 |
q49 | I | q52 |
q49 | D | q52 |
q49 | 7 | q52 |
q49 | w | q52 |
q49 | G | q52 |
q49 | a | q52 |
q49 | 6 | q52 |
q49 | c | q52 |
q49 | R | q52 |
q49 | j | q52 |
q49 | u | q52 |
q49 | U | q52 |
q49 | . | q52 |
q49 | 8 | q52 |
q49 | m | q52 |
q49 | k | q52 |
q49 | d | q52 |
q49 | \n | qf |
q49 | \r | q76 |
q5 | S | q6 |
q50 | H | q55 |
q50 | h | q55 |
q52 | S | q52 |
q52 | f | q52 |
q52 | i | q52 |
q52 | e | q52 |
q52 | y | q52 |
q52 | Q | q52 |
q52 | 5 | q52 |
q52 | h | q52 |
q52 | 3 | q52 |
q52 | o | q52 |
q52 | b | q52 |
q52 | p | q52 |
q52 | x | q52 |
q52 | L | q52 |
q52 | W | q52 |
q52 | K | q52 |
q52 | Y | q52 |
q52 | 4 | q52 |
q52 | l | q52 |
q52 | N | q52 |
q52 | Z | q52 |
q52 | 2 | q52 |
q52 | X | q52 |
q52 | P | q52 |
q52 | E | q52 |
q52 | g | q52 |
q52 | s | q52 |
q52 | r | q52 |
q52 | v | q52 |
q52 | C | q52 |
q52 | J | q52 |
q52 | V | q52 |
q52 | 1 | q52 |
q52 | O | q52 |
q52 | 9 | q52 |
q52 | T | q52 |
q52 | A | q52 |
q52 | q | q52 |
q52 | t | q52 |
q52 | n | q52 |
q52 | F | q52 |
q52 | z | q52 |
q52 | 0 | q52 |
q52 | H | q52 |
q52 | - | q52 |
q52 | B | q52 |
q52 | M | q52 |
q52 | I | q52 |
q52 | D | q52 |
q52 | 7 | q52 |
q52 | w | q52 |
q52 | G | q52 |
q52 | a | q52 |
q52 | 6 | q52 |
q52 | c | q52 |
q52 | R | q52 |
q52 | j | q52 |
q52 | u | q52 |
q52 | U | q52 |
q52 | . | q52 |
q52 | 8 | q52 |
q52 | m | q52 |
q52 | k | q52 |
q52 | d | q52 |
q52 | : | q53 |
q53 | (space) | q54 |
q54 | S | q56 |
q54 | / | q56 |
q54 | f | q56 |
q54 | i | q56 |
q54 | e | q56 |
q54 | y | q56 |
q54 | = | q56 |
q54 | Q | q56 |
q54 | 5 | q56 |
q54 | h | q56 |
q54 | 3 | q56 |
q54 | o | q56 |
q54 | b | q56 |
q54 | p | q56 |
q54 | x | q56 |
q54 | L | q56 |
q54 | W | q56 |
q54 | (space) | q56 |
q54 | K | q56 |
q54 | Y | q56 |
q54 | 4 | q56 |
q54 | l | q56 |
q54 | N | q56 |
q54 | Z | q56 |
q54 | 2 | q56 |
q54 | X | q56 |
q54 | P | q56 |
q54 | E | q56 |
q54 | g | q56 |
q54 | s | q56 |
q54 | r | q56 |
q54 | v | q56 |
q54 | C | q56 |
q54 | J | q56 |
q54 | V | q56 |
q54 | 1 | q56 |
q54 | O | q56 |
q54 | 9 | q56 |
q54 | ) | q56 |
q54 | , | q56 |
q54 | T | q56 |
q54 | A | q56 |
q54 | q | q56 |
q54 | t | q56 |
q54 | n | q56 |
q54 | F | q56 |
q54 | z | q56 |
q54 | 0 | q56 |
q54 | H | q56 |
q54 | - | q56 |
q54 | B | q56 |
q54 | M | q56 |
q54 | I | q56 |
q54 | * | q56 |
q54 | + | q56 |
q54 | D | q56 |
q54 | _ | q56 |
q54 | 7 | q56 |
q54 | w | q56 |
q54 | G | q56 |
q54 | a | q56 |
q54 | ( | q56 |
q54 | 6 | q56 |
q54 | c | q56 |
q54 | R | q56 |
q54 | j | q56 |
q54 | u | q56 |
q54 | : | q56 |
q54 | ; | q56 |
q54 | ? | q56 |
q54 | U | q56 |
q54 | . | q56 |
q54 | 8 | q56 |
q54 | m | q56 |
q54 | k | q56 |
q54 | d | q56 |
q55 | O | q58 |
q55 | o | q58 |
q56 | S | q56 |
q56 | / | q56 |
q56 | f | q56 |
q56 | i | q56 |
q56 | e | q56 |
q56 | y | q56 |
q56 | = | q56 |
q56 | Q | q56 |
q56 | 5 | q56 |
q56 | h | q56 |
q56 | 3 | q56 |
q56 | o | q56 |
q56 | b | q56 |
q56 | p | q56 |
q56 | x | q56 |
q56 | L | q56 |
q56 | W | q56 |
q56 | (space) | q56 |
q56 | K | q56 |
q56 | Y | q56 |
q56 | 4 | q56 |
q56 | l | q56 |
q56 | N | q56 |
q56 | Z | q56 |
q56 | 2 | q56 |
q56 | X | q56 |
q56 | P | q56 |
q56 | E | q56 |
q56 | g | q56 |
q56 | s | q56 |
q56 | r | q56 |
q56 | v | q56 |
q56 | C | q56 |
q56 | J | q56 |
q56 | V | q56 |
q56 | 1 | q56 |
q56 | O | q56 |
q56 | 9 | q56 |
q56 | ) | q56 |
q56 | , | q56 |
q56 | T | q56 |
q56 | A | q56 |
q56 | q | q56 |
q56 | t | q56 |
q56 | n | q56 |
q56 | F | q56 |
q56 | z | q56 |
q56 | 0 | q56 |
q56 | H | q56 |
q56 | - | q56 |
q56 | B | q56 |
q56 | M | q56 |
q56 | I | q56 |
q56 | * | q56 |
q56 | + | q56 |
q56 | D | q56 |
q56 | _ | q56 |
q56 | 7 | q56 |
q56 | w | q56 |
q56 | G | q56 |
q56 | a | q56 |
q56 | ( | q56 |
q56 | 6 | q56 |
q56 | c | q56 |
q56 | R | q56 |
q56 | j | q56 |
q56 | u | q56 |
q56 | : | q56 |
q56 | ; | q56 |
q56 | ? | q56 |
q56 | U | q56 |
q56 | . | q56 |
q56 | 8 | q56 |
q56 | m | q56 |
q56 | k | q56 |
q56 | d | q56 |
q56 | λ | q75 |
q56 | λ | q57 |
q57 | \n | q49 |
q58 | S | q59 |
q58 | s | q59 |
q59 | T | q60 |
q59 | t | q60 |
q6 | T | q7 |
q60 | : | q61 |
q61 | (space) | q62 |
q62 | S | q63 |
q62 | f | q63 |
q62 | i | q63 |
q62 | e | q63 |
q62 | y | q63 |
q62 | Q | q63 |
q62 | 5 | q63 |
q62 | h | q63 |
q62 | 3 | q63 |
q62 | o | q63 |
q62 | b | q63 |
q62 | p | q63 |
q62 | x | q63 |
q62 | L | q63 |
q62 | W | q63 |
q62 | K | q63 |
q62 | Y | q63 |
q62 | 4 | q63 |
q62 | l | q63 |
q62 | N | q63 |
q62 | Z | q63 |
q62 | 2 | q63 |
q62 | X | q63 |
q62 | P | q63 |
q62 | E | q63 |
q62 | g | q63 |
q62 | s | q63 |
q62 | r | q63 |
q62 | v | q63 |
q62 | C | q63 |
q62 | J | q63 |
q62 | V | q63 |
q62 | 1 | q63 |
q62 | O | q63 |
q62 | 9 | q63 |
q62 | T | q63 |
q62 | A | q63 |
q62 | q | q63 |
q62 | t | q63 |
q62 | n | q63 |
q62 | F | q63 |
q62 | z | q63 |
q62 | 0 | q63 |
q62 | H | q63 |
q62 | - | q63 |
q62 | B | q63 |
q62 | M | q63 |
q62 | I | q63 |
q62 | D | q63 |
q62 | 7 | q63 |
q62 | w | q63 |
q62 | G | q63 |
q62 | a | q63 |
q62 | 6 | q63 |
q62 | c | q63 |
q62 | R | q63 |
q62 | j | q63 |
q62 | u | q63 |
q62 | U | q63 |
q62 | . | q63 |
q62 | 8 | q63 |
q62 | m | q63 |
q62 | k | q63 |
q62 | d | q63 |
q63 | S | q63 |
q63 | f | q63 |
q63 | i | q63 |
q63 | e | q63 |
q63 | y | q63 |
q63 | Q | q63 |
q63 | 5 | q63 |
q63 | h | q63 |
q63 | 3 | q63 |
q63 | o | q63 |
q63 | b | q63 |
q63 | p | q63 |
q63 | x | q63 |
q63 | L | q63 |
q63 | W | q63 |
q63 | K | q63 |
q63 | Y | q63 |
q63 | 4 | q63 |
q63 | l | q63 |
q63 | N | q63 |
q63 | Z | q63 |
q63 | 2 | q63 |
q63 | X | q63 |
q63 | P | q63 |
q63 | E | q63 |
q63 | g | q63 |
q63 | s | q63 |
q63 | r | q63 |
q63 | v | q63 |
q63 | C | q63 |
q63 | J | q63 |
q63 | V | q63 |
q63 | 1 | q63 |
q63 | O | q63 |
q63 | 9 | q63 |
q63 | T | q63 |
q63 | A | q63 |
q63 | q | q63 |
q63 | t | q63 |
q63 | n | q63 |
q63 | F | q63 |
q63 | z | q63 |
q63 | 0 | q63 |
q63 | H | q63 |
q63 | - | q63 |
q63 | B | q63 |
q63 | M | q63 |
q63 | I | q63 |
q63 | D | q63 |
q63 | 7 | q63 |
q63 | w | q63 |
q63 | G | q63 |
q63 | a | q63 |
q63 | 6 | q63 |
q63 | c | q63 |
q63 | R | q63 |
q63 | j | q63 |
q63 | u | q63 |
q63 | U | q63 |
q63 | . | q63 |
q63 | 8 | q63 |
q63 | m | q63 |
q63 | k | q63 |
q63 | d | q63 |
q63 | λ | q73 |
q63 | : | q65 |
q64 | \n | q49 |
q65 | 7 | q66 |
q65 | 2 | q66 |
q65 | 9 | q66 |
q65 | 6 | q66 |
q65 | 5 | q66 |
q65 | 0 | q66 |
q65 | 3 | q66 |
q65 | 1 | q66 |
q65 | 8 | q66 |
q65 | 4 | q66 |
q65 | λ | q73 |
q66 | 7 | q67 |
q66 | 2 | q67 |
q66 | 9 | q67 |
q66 | 6 | q67 |
q66 | 5 | q67 |
q66 | 0 | q67 |
q66 | 3 | q67 |
q66 | 1 | q67 |
q66 | 8 | q67 |
q66 | 4 | q67 |
q66 | λ | q73 |
q67 | 7 | q68 |
q67 | 2 | q68 |
q67 | 9 | q68 |
q67 | 6 | q68 |
q67 | 5 | q68 |
q67 | 0 | q68 |
q67 | 3 | q68 |
q67 | 1 | q68 |
q67 | 8 | q68 |
q67 | 4 | q68 |
q67 | λ | q73 |
q68 | 7 | q69 |
q68 | 2 | q69 |
q68 | 9 | q69 |
q68 | 6 | q69 |
q68 | 5 | q69 |
q68 | 0 | q69 |
q68 | 3 | q69 |
q68 | 1 | q69 |
q68 | 8 | q69 |
q68 | 4 | q69 |
q68 | λ | q73 |
q69 | 7 | q70 |
q69 | 2 | q70 |
q69 | 9 | q70 |
q69 | 6 | q70 |
q69 | 5 | q70 |
q69 | 0 | q70 |
q69 | 3 | q70 |
q69 | 1 | q70 |
q69 | 8 | q70 |
q69 | 4 | q70 |
q69 | λ | q73 |
q7 | (space) | q33 |
q70 | λ | q73 |
q71 | \r | q47 |
q72 | \r | q48 |
q73 | λ | q64 |
q73 | λ | q74 |
q74 | \r | q64 |
q75 | \r | q57 |
q76 | \n | qf |
q8 | E | q9 |
q9 | A | q10 |
This project is licensed under the MIT License. Feel free to use, modify, and distribute it as per the terms of the license.