2022-11-18 22:05:06 +03:00
|
|
|
export const Placeholder = {
|
|
|
|
startToken: "#~",
|
|
|
|
endToken: "~#",
|
|
|
|
};
|
|
|
|
|
|
|
|
export interface Node {
|
|
|
|
id: string;
|
2023-05-07 15:30:29 +03:00
|
|
|
type: "root" | "expression" | "statement" | "block" | "comment" | "ignore";
|
2022-11-18 22:05:06 +03:00
|
|
|
content: string;
|
2023-05-07 15:30:29 +03:00
|
|
|
preNewLines: number;
|
2022-11-18 22:05:06 +03:00
|
|
|
originalText: string;
|
|
|
|
index: number;
|
|
|
|
length: number;
|
|
|
|
nodes: { [id: string]: Node };
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Expression extends Node {
|
|
|
|
type: "expression";
|
2023-05-01 10:22:18 +03:00
|
|
|
delimiter: Delimiter;
|
2022-11-18 22:05:06 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
export type Delimiter = "" | "-" | "+";
|
|
|
|
|
|
|
|
export interface Statement extends Node {
|
|
|
|
type: "statement";
|
2023-03-17 22:38:24 +03:00
|
|
|
keyword: string;
|
2022-11-21 16:38:11 +03:00
|
|
|
delimiter: Delimiter;
|
2022-11-18 22:05:06 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface Block extends Node {
|
|
|
|
type: "block";
|
|
|
|
start: Statement;
|
|
|
|
end: Statement;
|
2023-05-07 15:30:29 +03:00
|
|
|
containsNewLines: boolean;
|
2022-11-18 22:05:06 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
export const nonClosingStatements = [
|
|
|
|
"else",
|
2022-12-06 20:18:15 +03:00
|
|
|
"elif",
|
2022-11-18 22:05:06 +03:00
|
|
|
"include",
|
|
|
|
"import",
|
|
|
|
"from",
|
|
|
|
"extends",
|
|
|
|
];
|