Copy Code
TOPIC
	about_parsing

SHORT DESCRIPTION
	Describes how Windows PowerShell parses commands.


LONG DESCRIPTION
	When you enter a command at the command prompt, Windows PowerShell
	breaks the command text into a series of segments called tokens
	and then determines how to interpret each one. For example, Windows
	PowerShell breaks the following command into two tokens, "Write-Host"
	and "book", and interprets each token separately:


		Write-Host book


	When processing a command, the Windows PowerShell parser operates
	in expression mode or in argument mode: 

		- In expression mode, character string values must be contained in
		quotation marks. Numbers not enclosed in quotation marks are treated
		as numerical values (rather than as a series of characters). 

		- In argument mode, each value is treated as an expandable string 
		unless it begins with one of the following special characters: dollar
		sign ($), at sign (@), single quotation mark ('), double quotation
		mark ("), or an opening parenthesis (().

	If preceded by one of these characters, the value is treated as a value
	expression.


	The following table provides several examples of commands processed in 
	expression mode and argument mode and the results produced by those 
	commands.


	Example			Mode		 Result
	------------------ ----------   ----------------
	2+2				Expression   4 (integer)
	Write-Output 2+2   Argument	 "2+2" (string)
	Write-Output (2+2) Expression   4 (integer)
	$a = 2+2		 Expression   $a = 4 (integer)
	Write-Output $a	Expression   4 (integer)
	Write-Output $a/H  Argument	 "4/H" (string)


	Every token can be interpreted as some kind of object type, such
	as Boolean or string. Windows PowerShell attempts to determine the
	object type from the expression. The object type depends on the
	type of parameter a command expects and on whether Windows PowerShell
	knows how to convert the argument to the correct type. The
	following table shows several examples of the types assigned to
	values returned by the expressions.


	Example			Mode		 Result
	------------------ ----------   ---------------
	Write-Output !1	argument	 "!1" (string)
	Write-Output (!1)  expression   False (Boolean)
	Write-Output (2)   expression   2 (integer)


SEE ALSO
	about_Command_Syntax