In this paper I will consider parsing as a discrete combinatorial problem which consists in constructing a labeled graph that satisfies a set of linguistic constraints. I will identify some properties of linguistic constraints which allow this problem to be solved efficiently using constraint satisfaction algorithms. I then describe briefly a modular parsing algorithm which constructs a syntactic graph using a set of generative operations and applies a filtering algorithm to eliminate inconsistent nodes and edges. .