lex: allow for struct/union in types in args etc
authorAlan Cox <alan@linux.intel.com>
Thu, 16 Nov 2017 23:54:23 +0000 (23:54 +0000)
committerAlan Cox <alan@linux.intel.com>
Thu, 16 Nov 2017 23:54:23 +0000 (23:54 +0000)
Applications/SmallC/lex.c

index a2a98d0..e212a29 100644 (file)
@@ -196,11 +196,21 @@ void blanks(void) {
 
 /**
  * returns declaration type
- * @return VOID, CCHAR, CINT, UCHAR, UINT
+ * @return VOID, CCHAR, CINT, UCHAR, UINT. STRUCT
  *
  * FIXME: wants rewriting to collect property bits and base type right
  */
 int get_type(void) {
+    int otag;
+    char symbol_name[NAMEMAX];
+    int sflag = 0;
+    if (sflag = amatch("struct", 6) || amatch("union", 5)) {
+        if (symname(symbol_name) == 0)
+            illname();
+        if ((otag = find_tag(symbol_name)) == -1)
+            error("unknown struct/union");
+        return STRUCT;
+    }
     if (amatch ("void", 4)) {
         return VOID;
     }