Well, let me elaborate.
Context-free grammars are things like L-Systems and take the form:
a -> (a)
a -> (A + a)
a -> A
which given an initial seed of "a" could produce strings like:
"(A + (A + (A)))"
A context-sensitive grammar is different in that it allows for multiple characters in a specific order on the left hand side of the rule:
aB -> Ba
a -> BaB
a -> A
which given an initial seed of "a" could produce strings like:
"BBBBA"
But those are only for string like languages. I'm making a Zeldalike, so a directed graph is the best way to do procedural generation (using a language like this). This allows for nodes (rooms) to connect to multiple other nodes instead of just touching its two neighbors (obviously something that a Zeldalike needs)
So, here is what I have:
1) The graph/node/connection system -- not hard to do
2) The rule rewriting system -- a little bit trickier (has to find patterns that match the left hand side, choose a match at random [if it exists], and then apply the rewriting rule)
3) A graph plotting tool -- Once I have a graph in place, now I have to draw it in a way that it is planar (no edges cross) or as close to planar as I can. I'm doing this with a spring-based force solver as it seems to be the easiest option that produces decent results (at least, I'm liking them so far)