这是来自解析器模块的函数。我无法理解一行代码
let rec e1 tokens =
match tokens with
Tokenizer.IfTok :: tokens1 ->
let (testAST, tokens2) = e1 tokens1
in
(match tokens2 with
Tokenizer.ThenTok :: tokens3 ->
let (thenAST, tokens4) = e1 tokens3
in
(match tokens4 with
Tokenizer.ElseTok :: tokens5 ->
let (elseAST, tokens6) = e1 tokens5
in
(If(testAST, thenAST, elseAST), tokens6)
| _ -> raise (Syntax ("e1: missing else.")))
| _ -> raise (Syntax ("e1: missing then.")))
| _ -> e2 tokens
and e2 tokens = ........
我不知道这条线是如何工作的
let (testAST, tokens2) = e1 tokens1 in
我知道它声明了一个局部变量,它是一个元组,但是值 (testAST, tokens2) 来自哪里?它似乎与令牌或令牌1没有任何关系。此行是否仅声明一个元组或它也调用该函数?谢谢!