Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
304b074
feat(lexer): add brackets
FyreByrd Oct 30, 2025
66c3a63
feat(parser): add array index and slice
FyreByrd Oct 30, 2025
41d7a24
feat(lexer): add comma
FyreByrd Oct 30, 2025
b47b6ef
feat(parser): add array literals
FyreByrd Oct 30, 2025
75eae9a
chore(docs): update syntax diagrams
FyreByrd Oct 30, 2025
a884961
chore(parser): update cst-types
FyreByrd Oct 30, 2025
d616f0c
chore(parser): check off yacc-reference
FyreByrd Oct 30, 2025
c9c6475
fix(parser): break index or slice into subrule
FyreByrd Oct 30, 2025
839ba63
chore(docs): update syntax diagrams
FyreByrd Oct 30, 2025
0cd9a06
chore(parser): update cst-types
FyreByrd Oct 30, 2025
704f919
fix(parser): fix comma separation
FyreByrd Oct 30, 2025
054c627
chore(docs): update syntax diagrams
FyreByrd Oct 30, 2025
2176a01
chore(parser): update cst-types
FyreByrd Oct 30, 2025
20dfd6a
chore(tests): add input file for arrays
FyreByrd Oct 30, 2025
abb2972
feat(printer): handle index/slice
FyreByrd Oct 30, 2025
378941a
chore(printer): fix visit to include new methods
FyreByrd Oct 30, 2025
b7d4501
chore(tests): add multi-dimensional arrays to test file
FyreByrd Oct 30, 2025
94f6881
fix(parser): parse input *before* checking if errors exist
FyreByrd Oct 31, 2025
ab8bdda
feat(parser): add explicit array type
FyreByrd Oct 31, 2025
7342ab1
chore(docs): update syntax diagrams
FyreByrd Oct 31, 2025
debdd48
chore(parser): update cst-types
FyreByrd Oct 31, 2025
945cee5
feat(printer): handle array types
FyreByrd Oct 31, 2025
9af0b5c
chore(tests): add array types to test file
FyreByrd Oct 31, 2025
323bfed
fix(printer): missing indexOrSlice call
FyreByrd Oct 31, 2025
cd19daa
chore(tests): add input for precedence handler
FyreByrd Oct 31, 2025
543f239
chore(precedence): update precedence handler
FyreByrd Oct 31, 2025
d1d842d
feat(semantics): initial look at array indexing
FyreByrd Nov 1, 2025
de2dff6
chore(tests): update test input for bad indexing
FyreByrd Nov 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 44 additions & 3 deletions apps/parser/generated/cst-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,21 +76,43 @@ export interface ExpressionCstNode extends CstNode {
}

export type ExpressionCstChildren = {
value: ValueCstNode[];
chainValue: ChainValueCstNode[];
PostFix?: IToken[];
CmpAsgn?: IToken[];
BinOp?: IToken[];
expression?: ExpressionCstNode[];
};

export interface ChainValueCstNode extends CstNode {
name: 'chainValue';
children: ChainValueCstChildren;
}

export type ChainValueCstChildren = {
value: ValueCstNode[];
indexOrSlice?: IndexOrSliceCstNode[];
};

export interface IndexOrSliceCstNode extends CstNode {
name: 'indexOrSlice';
children: IndexOrSliceCstChildren;
}

export type IndexOrSliceCstChildren = {
LBRACK: IToken[];
expression?: ExpressionCstNode[];
COLON?: IToken[];
RBRACK: IToken[];
};

export interface ValueCstNode extends CstNode {
name: 'value';
children: ValueCstChildren;
}

export type ValueCstChildren = {
UnOp?: IToken[];
value?: ValueCstNode[];
chainValue?: ChainValueCstNode[];
constant?: ConstantCstNode[];
ID?: IToken[];
LPAREN?: IToken[];
Expand All @@ -107,9 +129,13 @@ export type ConstantCstChildren = {
STRING?: IToken[];
BOOL?: IToken[];
BIN?: IToken[];
INT?: IToken[];
CMPX?: IToken[];
REAL?: IToken[];
INT?: IToken[];
LBRACK?: IToken[];
expression?: ExpressionCstNode[];
COMMA?: IToken[];
RBRACK?: IToken[];
};

export interface TypeCstNode extends CstNode {
Expand All @@ -119,6 +145,18 @@ export interface TypeCstNode extends CstNode {

export type TypeCstChildren = {
BASIC_TYPE: IToken[];
arrayType?: ArrayTypeCstNode[];
};

export interface ArrayTypeCstNode extends CstNode {
name: 'arrayType';
children: ArrayTypeCstChildren;
}

export type ArrayTypeCstChildren = {
LBRACK: IToken[];
INT?: IToken[];
RBRACK: IToken[];
};

export interface ICstNodeVisitor<IN, OUT> extends ICstVisitor<IN, OUT> {
Expand All @@ -128,7 +166,10 @@ export interface ICstNodeVisitor<IN, OUT> extends ICstVisitor<IN, OUT> {
body(children: BodyCstChildren, param?: IN): OUT;
declaration(children: DeclarationCstChildren, param?: IN): OUT;
expression(children: ExpressionCstChildren, param?: IN): OUT;
chainValue(children: ChainValueCstChildren, param?: IN): OUT;
indexOrSlice(children: IndexOrSliceCstChildren, param?: IN): OUT;
value(children: ValueCstChildren, param?: IN): OUT;
constant(children: ConstantCstChildren, param?: IN): OUT;
type(children: TypeCstChildren, param?: IN): OUT;
arrayType(children: ArrayTypeCstChildren, param?: IN): OUT;
}
Loading