Array ptr, numeric length, tests
This commit is contained in:
parent
373e9decf3
commit
e59e34a7be
4 changed files with 16 additions and 10 deletions
|
|
@ -34,12 +34,12 @@ proc saveNodeData(node: TSNode): bool =
|
||||||
|
|
||||||
let
|
let
|
||||||
nparent = node.tsNodeParent()
|
nparent = node.tsNodeParent()
|
||||||
if not nparent.tsNodeIsNull():
|
if not nparent.tsNodeIsNull() and node.tsNodePrevNamedSibling().tsNodeIsNull():
|
||||||
let
|
let
|
||||||
npname = nparent.tsNodeType()
|
npname = nparent.tsNodeType()
|
||||||
npparent = nparent.tsNodeParent()
|
npparent = nparent.tsNodeParent()
|
||||||
if npname == "pointer_declarator" or
|
if npname == "pointer_declarator" or
|
||||||
(npname == "function_declarator" and
|
($npname in ["function_declarator", "array_declarator"] and
|
||||||
not npparent.tsNodeIsNull() and npparent.tsNodeType() == "pointer_declarator"):
|
not npparent.tsNodeIsNull() and npparent.tsNodeType() == "pointer_declarator"):
|
||||||
|
|
||||||
if gStateRT.data[^1].val != "object":
|
if gStateRT.data[^1].val != "object":
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ proc initGrammar() =
|
||||||
(sized_type_specifier?
|
(sized_type_specifier?
|
||||||
(primitive_type?)
|
(primitive_type?)
|
||||||
)
|
)
|
||||||
(struct_specifier?
|
(struct_specifier|union_specifier|enum_specifier?
|
||||||
(type_identifier)
|
(type_identifier)
|
||||||
)
|
)
|
||||||
(type_identifier?)
|
(type_identifier?)
|
||||||
|
|
@ -87,7 +87,7 @@ proc initGrammar() =
|
||||||
let
|
let
|
||||||
ftyp = gStateRT.data[i].val.getIdentifier()
|
ftyp = gStateRT.data[i].val.getIdentifier()
|
||||||
fname = gStateRT.data[i+1].val.getIdentifier()
|
fname = gStateRT.data[i+1].val.getIdentifier()
|
||||||
if i+2 < gStateRT.data.len-fend and gStateRT.data[i+2].name == "identifier":
|
if i+2 < gStateRT.data.len-fend and gStateRT.data[i+2].name in ["identifier", "number_literal"]:
|
||||||
let
|
let
|
||||||
flen = gStateRT.data[i+2].val.getIdentifier()
|
flen = gStateRT.data[i+2].val.getIdentifier()
|
||||||
gStateRT.typeStr &= &" {fname}*: array[{flen}, {ftyp}]\n"
|
gStateRT.typeStr &= &" {fname}*: array[{flen}, {ftyp}]\n"
|
||||||
|
|
@ -106,7 +106,7 @@ proc initGrammar() =
|
||||||
(sized_type_specifier?
|
(sized_type_specifier?
|
||||||
(primitive_type?)
|
(primitive_type?)
|
||||||
)
|
)
|
||||||
(struct_specifier?
|
(struct_specifier|union_specifier|enum_specifier?
|
||||||
(type_identifier)
|
(type_identifier)
|
||||||
)
|
)
|
||||||
(field_identifier?)
|
(field_identifier?)
|
||||||
|
|
@ -114,12 +114,12 @@ proc initGrammar() =
|
||||||
(field_identifier?)
|
(field_identifier?)
|
||||||
(array_declarator?
|
(array_declarator?
|
||||||
(field_identifier)
|
(field_identifier)
|
||||||
(identifier)
|
(identifier|number_literal)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(array_declarator?
|
(array_declarator?
|
||||||
(field_identifier)
|
(field_identifier)
|
||||||
(identifier)
|
(identifier|number_literal)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -140,7 +140,7 @@ proc initGrammar() =
|
||||||
(sized_type_specifier?
|
(sized_type_specifier?
|
||||||
(primitive_type?)
|
(primitive_type?)
|
||||||
)
|
)
|
||||||
(struct_specifier?
|
(struct_specifier|union_specifier|enum_specifier?
|
||||||
(type_identifier)
|
(type_identifier)
|
||||||
)
|
)
|
||||||
(field_identifier?)
|
(field_identifier?)
|
||||||
|
|
@ -148,12 +148,12 @@ proc initGrammar() =
|
||||||
(field_identifier?)
|
(field_identifier?)
|
||||||
(array_declarator?
|
(array_declarator?
|
||||||
(field_identifier)
|
(field_identifier)
|
||||||
(identifier)
|
(identifier|number_literal)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(array_declarator?
|
(array_declarator?
|
||||||
(field_identifier)
|
(field_identifier)
|
||||||
(identifier)
|
(identifier|number_literal)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,10 @@ typedef int * INTPTR;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int *field;
|
int *field;
|
||||||
|
int field2[TEST_INT];
|
||||||
|
enum ENUM field3[TEST_INT];
|
||||||
|
int *field4[TEST_INT];
|
||||||
|
ENUM4 *field5[TEST_INT];
|
||||||
} STRUCT4;
|
} STRUCT4;
|
||||||
|
|
||||||
union UNION1 {
|
union UNION1 {
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,8 @@ ct = 4
|
||||||
s.field1 = 5
|
s.field1 = 5
|
||||||
s2.field1 = 6
|
s2.field1 = 6
|
||||||
s3.field1 = 7
|
s3.field1 = 7
|
||||||
|
s4.field2[2] = 5
|
||||||
|
s4.field3[3] = enum1
|
||||||
|
|
||||||
e = enum1
|
e = enum1
|
||||||
e2 = enum4
|
e2 = enum4
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue