在電腦程式語言中,context-free language (無環語言) 是一種符合文法 (grammar) 規則的語言,其特點是每個規則只與符號自身有關,而不受上下文的影響。
簡單來說,context-free language 就是一種語言,其文法可以用上下文無關文法 (context-free grammar) 描述。而 context-free grammar 是指由一個開始符號 (start symbol) 開始,每個規則都只涉及單一非終端符號 (nonterminal symbol) 的產生式 (production),而這些產生式不會受到上下文的影響。
一個經典的例子是平衡括號語言。這是一個由左右括號組成的語言,其中每個左括號都必須有一個對應的右括號。這個語言可以用下面的 context-free grammar 描述:
S -> (S)S
S -> ε
其中,S 是起始符號,ε 代表空字串。這個文法的意思是,一個平衡括號語言可以由一對左右括號和另一個平衡括號語言組成,或者是一個空字串。
例如,這個文法可以生成以下合法的平衡括號序列:
()
(())
()()
((()))
()()()
這些序列都可以用相同的文法推導出來,而且都是 context-free language 的範例。