2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								! Copyright (C) 2008 Joe Groff.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								! See http://factorcode.org/license.txt for BSD license.  
						 
					
						
							
								
									
										
										
										
											2010-04-01 15:43:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								USING:  help.markup  help.syntax  kernel  multiline  sequences  ;
  
						 
					
						
							
								
									
										
										
										
											2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								IN:  literals  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								HELP:  $  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $syntax "$ word"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $description "Executes "  { $snippet "word"  } " at parse time and adds the result(s) to the parser accumulator."  }
							 
						 
					
						
							
								
									
										
										
										
											2009-02-18 17:57:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{ $notes { $snippet "word"  } "'s definition is looked up and "  { $link call  } "ed at parse time, so words that reference words in the current compilation unit cannot be used with "  { $snippet "$"  } "."  }
							 
						 
					
						
							
								
									
										
										
										
											2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{ $examples
							 
						 
					
						
							
								
									
										
										
										
											2010-12-05 15:06:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { $example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "USING: kernel literals prettyprint ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "IN: scratchpad" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "CONSTANT: five 5" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "{ $ five } ." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "{ 5 }" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { $example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "USING: kernel literals prettyprint ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "IN: scratchpad" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ": seven-eleven ( -- a b ) 7 11 ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "{ $ seven-eleven } ." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "{ 7 11 }" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								HELP:  $[  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $syntax "$[ code ]"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $description "Calls "  { $snippet "code"  } " at parse time and adds the result(s) to the parser accumulator."  }
							 
						 
					
						
							
								
									
										
										
										
											2009-02-18 17:57:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{ $notes "Since "  { $snippet "code"  } " is "  { $link call  } "ed at parse time, it cannot reference any words defined in the same compilation unit."  }
							 
						 
					
						
							
								
									
										
										
										
											2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{ $examples
							 
						 
					
						
							
								
									
										
										
										
											2010-12-05 15:06:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { $example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "USING: kernel literals math prettyprint ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "IN: scratchpad" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "<< CONSTANT: five 5 >>" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "{ $[ five dup 1 + dup 2 + ] } ." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "{ 5 6 8 }" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-05-06 15:38:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								HELP:  ${  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $syntax "${ code }"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $description "Outputs an array containing the results of executing "  { $snippet "code"  } " at parse time."  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $notes { $snippet "code"  } "'s definition is looked up and "  { $link call  } "ed at parse time, so words that reference words in the current compilation unit cannot be used with "  { $snippet "$"  } "."  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $examples
							 
						 
					
						
							
								
									
										
										
										
											2010-12-05 15:06:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { $example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "USING: kernel literals math prettyprint ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "IN: scratchpad" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "CONSTANT: five 5" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "CONSTANT: six 6" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "${ five six 7 } ." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "{ 5 6 7 }" 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-06 15:38:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ POSTPONE:  $  POSTPONE:  $[  POSTPONE:  ${  } related-words
							 
						 
					
						
							
								
									
										
										
										
											2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 15:43:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								HELP:  flags{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $values { "values"  sequence  } }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $description "Constructs a constant flag value from a sequence of integers or words that output integers. The resulting constant is computed at parse-time, which makes this word as efficient as using a literal integer."  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ $examples
							 
						 
					
						
							
								
									
										
										
										
											2010-12-05 15:06:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { $example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "USING: literals kernel prettyprint ;" 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 15:43:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        "IN: scratchpad" 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-23 21:49:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        "CONSTANT: x 0x1" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "flags{ 0x20 x 0b100 } .h" 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 15:43:27 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        "25" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ARTICLE: "literals"  "Interpolating code results into literal values" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"The "  { $vocab-link "literals"  } " vocabulary contains words to run code at parse time and insert the results into more complex literal values."  
						 
					
						
							
								
									
										
										
										
											2010-12-05 15:06:15 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ $example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "USING: kernel literals math prettyprint ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "IN: scratchpad" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "<< CONSTANT: five 5 >>" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "{ $ five $[ five dup 1 + dup 2 + ] } ." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "{ 5 5 6 8 }" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2009-10-01 15:56:36 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ $subsections
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    POSTPONE:  $ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    POSTPONE:  $[ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    POSTPONE:  ${ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-12 02:00:23 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ABOUT: "literals"