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