Adds src/main/grammar/Jai.bnf, the generated parser/PSI in src/main/gen, a
JaiParserDefinition, and the Tier 3 corpus parse gate (406/714 files clean).
Two things were not obvious:
- Grammar-Kit mints its own token instances from the .bnf 'tokens' block, which
are different objects from the ones JaiLexer emits, so every rule silently
failed to match. Fixed with tokenTypeFactory -> JaiTokenTypes.byName.
- A backslash inside an identifier is a continuation in the compiler's lexer
(Jai_Lexer/module.jai:444): 'left\_margin' is one identifier. JaiLexer now
does the same; the Tier 0 round-trip still holds because the token span
covers the backslash and the skipped spaces.
Constructs that BNF alone cannot express live in JaiParserUtil: directive-name
tests (#ident is one token), '==' before '{' for the switch form, procedure
header vs parenthesised expression, and the declaration lookahead.
11 lines
233 B
Java
11 lines
233 B
Java
// This is a generated file. Not intended for manual editing.
|
|
package dev.hgh.jai.psi;
|
|
|
|
import java.util.List;
|
|
import org.jetbrains.annotations.*;
|
|
import com.intellij.psi.PsiElement;
|
|
|
|
public interface JaiExpr extends PsiElement {
|
|
|
|
}
|