一阶逻辑(FOL)递归下降解析融合

问题描述 投票:0回答:0

FOL definition Image

我正在尝试构建一个递归下降解析器来将任意 FOL 句子解析为 AST。然而,在开发过程中,我对如何解析

AtomicSentence
感到有点困惑。
AtomicSentence
可以解析为
Predicate(Term, ...)
Term = Term
。 比如我要解析
Little(a, b, c) = d
,我会得到第一个Token
Little
。在那种情况下,令牌
Little
可以是函数名称或谓词名称,一旦我们解析等号,这对解析器来说就太晚了,最终将被解析。在这种情况下我应该如何做出正确的选择?

我有一个带有正则表达式的令牌类型

WORD
^[A-Z]\w*
而对于原子句

private AtomicSentenceASTNode atomicSentence() {
    switch (this.lookAheadToken.type) {
        case WORD: {
            // Is it a Term?
            // Or a Predicate?
        }
    }

    return null;
}
parsing logic recursive-descent
© www.soinside.com 2019 - 2024. All rights reserved.