A method, comprising: defining an operator stack in a memory, the operator stack adapted to store binary logical operators; defining a value stack in the memory, the value stack adapted to contain pointers to nodes of a filter expression tree; parsing a filter expression on an element-by-element basis for generating a binary tree that represents the filter expression, elements of the filter expression comprising operators and values, wherein for each next element in the filter expression: if the next element in the filter expression is a value, then adding the value to the value stack; and if the next element in the filter expression is an operator, then comparing the next element to a top element in the operator stack, and performing an action defined by a decision table based upon the next element and the top element; removing the completed binary tree from the value stack; defining stacks in a memory corresponding to a left sub-tree stack (L-stack), a right sub-tree stack (R-stack), a result of left sub-tree stack (RL-stack), and a result of right sub-tree stack (RR-stack); performing a post-order traversal of the nodes of the completed binary tree in which each node of the completed binary tree is visited, wherein during the post-order traversal; if a node is a leaf node, then insert the operation allocated to the leaf node to the L-stack if the leaf node is a left child or insert the operation allocated to the leaf node to the R-stack if the leaf node is a right child; and if the node is a non-leaf node, then processing the non-leaf node based upon whether the operation contains an OR operation or an AND operation, wherein the processing moves data into the RL-stack or the RR-stack; processing a root node of the completed binary tree; removing the disjunctive normal form of the filter expression from the RL-stack or the RR-stack corresponding to the root node; identifying overlapping keys from the disjunctive normal form of the filter expression, thereby to obtain a disjunctive normal form with non-overlapping conjunctive clauses; inserting the disjunctive normal form with non-overlapping conjunctive clauses into a hardware assisted Patricia tree; and performing line rate filtering using the hardware-assisted Patricia tree. defining an operator stack in a memory, the operator stack adapted to store binary logical operators; defining a value stack in the memory, the value stack adapted to contain pointers to nodes of a filter expression tree; parsing a filter expression on an element-by-element basis for generating a binary tree that represents the filter expression, elements of the filter expression comprising operators and values, wherein for each next element in the filter expression: if the next element in the filter expression is a value, then adding the value to the value stack; and if the next element in the filter expression is an operator, then comparing the next element to a top element in the operator stack, and performing an action defined by a decision table based upon the next element and the top element; if the next element in the filter expression is a value, then adding the value to the value stack; and if the next element in the filter expression is an operator, then comparing the next element to a top element in the operator stack, and performing an action defined by a decision table based upon the next element and the top element; removing the completed binary tree from the value stack; defining stacks in a memory corresponding to a left sub-tree stack (L-stack), a right sub-tree stack (R-stack), a result of left sub-tree stack (RL-stack), and a result of right sub-tree stack (RR-stack); performing a post-order traversal of the nodes of the completed binary tree in which each node of the completed binary tree is visited, wherein during the post-order traversal; if a node is a leaf node, then insert the operation allocated to the leaf node to the L-stack if the leaf node is a left child or insert the operation allocated to the leaf node to the R-stack if the leaf node is a right child; and if the node is a non-leaf node, then processing the non-leaf node based upon whether the operation contains an OR operation or an AND operation, wherein the processing moves data into the RL-stack or the RR-stack; processing a root node of the completed binary tree; removing the disjunctive normal form of the filter expression from the RL-stack or the RR-stack corresponding to the root node; identifying overlapping keys from the disjunctive normal form of the filter expression, thereby to obtain a disjunctive normal form with non-overlapping conjunctive clauses; inserting the disjunctive normal form with non-overlapping conjunctive clauses into a hardware assisted Patricia tree; and performing line rate filtering using the hardware-assisted Patricia tree.