Lex允許直接使用I/O例程。它們是:
  1. input(),返回下一個輸入字符;
  2. output(c),將字符c寫入輸出
  3. unput(c),將字符c壓回輸入流,下次input()時被讀出。

這些例程都有默認的宏定義,但是用戶可以重寫它們以適應(yīng)不同的需求。這些例程定義了外部文件和內(nèi)部字符之間的關(guān)系,并且只能同時存在或更改。它們可以被重寫使得輸入或者輸出被定向到特殊的位置,包括其他的程序或者內(nèi)存;但是字符集的使用必須在整個例程中保持統(tǒng)一;input必須返回0以表示文件結(jié)束;unputinput之間的關(guān)系必須保留,否則Lex不能完成向前搜索的操作。Lex在不需要的時候不會向前搜索,但是每一個以+*?$結(jié)尾的、或者含有/的規(guī)則需要這個功能。同樣,當一個表達式是另一個的前綴時,向前搜索也是必不可少的。參閱下文中有關(guān)Lex使用的字符集的討論。默認的Lex庫使用100個字符作為備用限制。


(但是這些在C++中似乎存在問題,我也正在調(diào)試)