aboutsummaryrefslogtreecommitdiff
path: root/language
diff options
context:
space:
mode:
Diffstat (limited to 'language')
-rw-r--r--language/index.rst1
-rw-r--r--language/types.rst17
2 files changed, 18 insertions, 0 deletions
diff --git a/language/index.rst b/language/index.rst
index e1e2b01..3f776f9 100644
--- a/language/index.rst
+++ b/language/index.rst
@@ -20,3 +20,4 @@ Syntax elements in this document are given in the form of `parsing expression gr
type-definition
functions
statements/index
+ types
diff --git a/language/types.rst b/language/types.rst
new file mode 100644
index 0000000..0a38239
--- /dev/null
+++ b/language/types.rst
@@ -0,0 +1,17 @@
+Types
+-----
+
+.. crowbar:element:: Type <- ConstType / PointerType / ArrayType / FunctionType / BasicType
+
+.. crowbar:element:: ConstType <- 'const' BasicType
+
+.. crowbar:element:: PointerType <- BasicType '*'
+
+.. crowbar:element:: ArrayType <- BasicType '[' Expression ']'
+
+.. crowbar:element:: FunctionType <- BasicType 'function' '(' FunctionTypeArgs? ')'
+ FunctionTypeArgs <- BasicType (',' BasicType)* ','?
+
+.. crowbar:element:: BasicType <- 'void' / 'bool' / 'float32' / 'float64' / 'int8' / 'int16' / 'int32' / 'int64' / 'intaddr' / 'intmax' / 'intsize' / 'uint8' / 'uint16' / 'uint32' / 'uint64' / 'uintaddr' / 'uintmax' / 'uintsize' / 'struct' identifier / 'enum' identifier / 'union' identifier / '(' Type ')'
+
+.. todo:: define like any of these