📄 language.values.html
字号:
CLASS="LITERAL">data</TT> flavor, so they are always enabled and thecomponent framework will generate appropriate<TTCLASS="LITERAL">#define's</TT>:</P><TABLEBORDER="5"BGCOLOR="#E0E0F0"WIDTH="70%"><TR><TD><PRECLASS="PROGRAMLISTING">#define CYGNUM_LIBC_RAND_SEED 1#define CYGNUM_LIBC_RAND_SEED_1#define CYGNUM_LIBC_RAND_TRACE_LEVEL 0#define CYGNUM_LIBC_RAND_TRACE_LEVEL_0</PRE></TD></TR></TABLE><P>Neither option has a <SPANCLASS="PROPERTY">compile</SPAN> or similar property, but any suchproperties would take effect. Any references to these options in <SPANCLASS="APPLICATION">CDL</SPAN>expressions would evaluate to the data part, so a hypotheticalconstraint of the form<TTCLASS="LITERAL">{ requires CYGNUM_LIBC_RAND_SEED > 42 }</TT>would not be satisfied with the default values. Both options use asimple constant for the <SPANCLASS="PROPERTY">default_value</SPAN> expression. It would bepossible to use a more complicated expression, for example the defaultfor <TTCLASS="VARNAME">CYGNUM_LIBC_RAND_TRACE_LEVEL</TT> could bedetermined from some global debugging option or from a debuggingoption that applies to the C library as a whole. Both options alsohave a <SPANCLASS="PROPERTY">legal_values</SPAN> constraint, which must be satisfied since theoptions are active and enabled. </P><DIVCLASS="NOTE"><BLOCKQUOTECLASS="NOTE"><P><B>Note: </B>The value <TTCLASS="LITERAL">0</TT> is legal for both<TTCLASS="VARNAME">CYGNUM_LIBC_RAND_SEED</TT> and<TTCLASS="VARNAME">CYGNUM_LIBC_RAND_TRACE_LEVEL</TT>, so in a <SPANCLASS="APPLICATION">CDL</SPAN>expression there is no easy way of distinguishing between the optionsbeing absent or having that particular value. This will be addressedby future enhancements to the expression syntax.</P></BLOCKQUOTE></DIV></DIV></DIV><DIVCLASS="SECT2"><H2CLASS="SECT2"><ANAME="LANGUAGE.EXPRESSION">Ordinary Expressions</H2><P>Expressions in <SPANCLASS="APPLICATION">CDL</SPAN> follow a conventional syntax, for example:</P><TABLEBORDER="5"BGCOLOR="#E0E0F0"WIDTH="70%"><TR><TD><PRECLASS="PROGRAMLISTING"> default_value CYGGLO_CODESIZE > CYGGLO_SPEED default_value { (CYG_HAL_STARTUP == "RAM" && !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS && !CYGINT_HAL_USE_ROM_MONITOR_UNSUPPORTED && !CYGSEM_HAL_POWERPC_COPY_VECTORS) ? 1 : 0 } default_value { "\"/dev/ser0\"" }</PRE></TD></TR></TABLE><P>However there is a complication in that the various arguments to a<SPANCLASS="PROPERTY">default_value</SPAN> property will first get processed by a <SPANCLASS="APPLICATION">Tcl</SPAN>interpreter, so special characters like quotes and square brackets mayget processed. Such problems can be avoided by enclosing non-trivialexpressions in braces, as in the second example above. The wayexpression parsing actually works is as follows:</P><P></P><OLTYPE="1"><LI><P>The <SPANCLASS="APPLICATION">Tcl</SPAN> interpreter splits the line or lines into a command and itsarguments. In the first <SPANCLASS="PROPERTY">default_value</SPAN> expression above the commandis <TTCLASS="LITERAL">default_value</TT> and there are three arguments,<TTCLASS="LITERAL">CYGGLO_CODESIZE</TT>, <TTCLASS="LITERAL">></TT> and<TTCLASS="LITERAL">CYGGLO_SPEED</TT>. In the second and third examplesthere is just one argument, courtesy of the braces.</P></LI><LI><P>Next option processing takes place, so any initial arguments thatbegin with a hyphen will be interpreted as options. This can causeproblems if the expression involves a negative number, so thespecial argument <TTCLASS="LITERAL">--</TT> can be used to prevent optionprocessing on the subsequent arguments.</P></LI><LI><P>All of the arguments are now concatenated, with a single space inbetween each one. Hence the following two expressions are equivalent,even though they will have been processed differently up to this point.</P><TABLEBORDER="5"BGCOLOR="#E0E0F0"WIDTH="70%"><TR><TD><PRECLASS="PROGRAMLISTING"> default_value CYGGLO_CODESIZE > CYGGLO_SPEED default_value {CYGGLO_CODESIZE > CYGGLO_SPEED}</PRE></TD></TR></TABLE></LI><LI><P>The expression parsing code now has a single string to process.</P></LI></OL><P><SPANCLASS="APPLICATION">CDL</SPAN> expressions consist of four types of element: references toconfiguration options, constant strings, integers, and floating pointnumbers. These are combined using a conventional set of operators: theunary operators <TTCLASS="LITERAL">-</TT>, <TTCLASS="LITERAL">~</TT> and<TTCLASS="LITERAL">!</TT>; the arithmetic operators <TTCLASS="LITERAL">+</TT>,<TTCLASS="LITERAL">-</TT>, <TTCLASS="LITERAL">*</TT>, <TTCLASS="LITERAL">/</TT> and<TTCLASS="LITERAL">%</TT>; the shift operators <TTCLASS="LITERAL"><<</TT>and <TTCLASS="LITERAL">>></TT>; the comparison operators<TTCLASS="LITERAL">==</TT>, <TTCLASS="LITERAL">!=</TT>, <TTCLASS="LITERAL"><</TT>,<TTCLASS="LITERAL"><=</TT>, <TTCLASS="LITERAL">></TT> and<TTCLASS="LITERAL">>=</TT>; the bitwise operators<TTCLASS="LITERAL">&</TT>, <TTCLASS="LITERAL">^</TT> and<TTCLASS="LITERAL">|</TT>; the logical operators <TTCLASS="LITERAL">&&</TT> and<TTCLASS="LITERAL">||</TT>; the string concatenation operator<TTCLASS="LITERAL">.</TT>; and the ternary conditional operator<TTCLASS="LITERAL">A ? B : C</TT>. There is also support forsome less widely available operators for logical equivalence andimplication, and for a set of function-style operations. Bracketedsub-expressions are supported, and the operators have the usualprecedence:</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN1653"><P></P><TABLEBORDER="1"CLASS="CALSTABLE"><THEAD><TR><THWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">Priority</TH><THWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">Operators</TH><THWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">Category</TH></TR></THEAD><TBODY><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">16</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">references, constants</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">basic elements</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">15</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">f(a, b, c)</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">function calls</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">14</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">~</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">bitwise not</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">14</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">!</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">logical not</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">14</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">-</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">arithmetic negation</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">13</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">* / %</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">multiplicative arithmetic</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">12</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">+ - .</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">additive arithmetic and string concatenation</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">11</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL"><< >></TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">bitwise shifts</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">10</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL"><= < > >=</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">inequality</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">9</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">== !=</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">comparison</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">8</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">&</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">bitwise and</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">7</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">^</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">bitwise xor</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">6</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">|</TT></TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">bitwise or</TD></TR><TR><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP">5</TD><TDWIDTH="33%"ALIGN="CENTER"VALIGN="TOP"><TTCLASS="LITERAL">&&</TT></TD><TDWIDTH="33%"ALIGN="CENTER"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -