• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

system/corennnnn


Commit MetaInfo

Revisiona96930572c3ef440065a87985ed5f01724bf159b (tree)
Zeit2009-05-12 06:51:47
AutorFrabrice Bellard <fabrice@bell...>
CommiterJack Palevich

Log Message

Document acc language features.

Original text from http://www.ioccc.org/2001/bellard.hint

Ändern Zusammenfassung

Diff

--- /dev/null
+++ b/libacc/FEATURES
@@ -0,0 +1,65 @@
1+
2+Supported C language subset (read joint example 'otccex.c' to have
3+ an introduction to OTCC dialect):
4+
5+ - Expressions:
6+
7+ * binary operators, by decreasing priority order: '*' '/' '%',
8+ '+' '-', '>>' '<<', '<' '<=' '>' '>=', '==' '!=', '&',
9+ '^', '|', '=', '&&', '||'.
10+
11+ * '&&' and '||' have the same semantics as C : left to right
12+ evaluation and early exit.
13+
14+ * Parenthesis are supported.
15+
16+ * Unary operators: '&', '*' (pointer indirection), '-'
17+ (negation), '+', '!', '~', post fixed '++' and '--'.
18+
19+ * Pointer indirection ('*') only works with explicit cast to
20+ 'char *', 'int *' or 'int (*)()' (function pointer).
21+
22+ * '++', '--', and unary '&' can only be used with variable
23+ lvalue (left value).
24+
25+ * '=' can only be used with variable or '*' (pointer
26+ indirection) lvalue.
27+
28+ * Function calls are supported with standard i386 calling
29+ convention. Function pointers are supported with explicit
30+ cast. Functions can be used before being declared.
31+
32+ - Types: only signed integer ('int') variables and functions can
33+ be declared. Variables cannot be initialized in
34+ declarations. Only old K&R function declarations are parsed
35+ (implicit integer return value and no types on arguments).
36+
37+ - Any function or variable from the libc can be used because OTCC
38+ uses the libc dynamic linker to resolve undefined symbols.
39+
40+ - Instructions: blocks ('{' '}') are supported as in C. 'if' and
41+ 'else' can be used for tests. The 'while' and 'for' C constructs
42+ are supported for loops. 'break' can be used to exit
43+ loops. 'return' is used for the return value of a function.
44+
45+ - Identifiers are parsed the same way as C. Local variables are
46+ handled, but there is no local name space (not a problem if
47+ different names are used for local and global variables).
48+
49+ - Numbers can be entered in decimal, hexadecimal ('0x' or '0X'
50+ prefix), or octal ('0' prefix).
51+
52+ - '#define' is supported without function like arguments. No macro
53+ recursion is tolerated. Other preprocessor directives are
54+ ignored.
55+
56+ - C Strings and C character constants are supported. Only '\n',
57+ '\"', '\'' and '\\' escapes are recognized.
58+
59+ - C Comments can be used (but no C++ comments).
60+
61+ - No error is displayed if an incorrect program is given.
62+
63+ - Memory: the code, data, and symbol sizes are limited to 100KB
64+ (it can be changed in the source code).
65+