Smallest individual element of a program is called as Token. Everything you see inside a program is a token.
For example  Suppose an English sentence. "C language is an awesome language. C was developed by Dennis Ritchie at AT&T Bell labs in 1972."
The above sentence is made of Alphabets (az AZ), Blank spaces, Digits (09) and special characters (full stop in our case). These are building blocks or basic elements of our sentence. Similarly there are various basic programming elements that makes any program.
There are five types of tokens.
What are Keywords?
Keyword is a reserved word whose meaning is already defined by the programming language. We cannot use keyword for any other purpose inside programming. Every programming language have some set of keywords.
Examples: int, do, while, void, return etc(Note: These keywords are common to C and C influenced languages).
What are Identifiers?
Identifiers are the name given to different programming elements. Either name given to a variable or a function or any other programming element, all follow some basic naming conventions listed below:
 Keywords must not be used as an identifier.
 Identifier must begin with an alphabet az AZ or an underscore_ symbol.
 Identifier can contains alphabets az AZ, digits 09 and underscore _ symbol.
 Identifier must not contain any special character (e.g. !@$*.'[] etc.) except underscore _.
Examples of some valid identifiers
num, Num, _num, _Num, num1, Num1, _num1, _Num1, _1num, _1Num, _num_, number_to_add
etc.
Examples of some invalid identifiers
1num, number to add, 1_num, numtoadd, num@
etc.
What are Operator?
Operators are the symbol given to any arithmetical or logical operations. Various programming languages provides various sets of operators some common operators are:
Lets suppose two variables a=10, b=5
 operator subtracts second operand from first i.e. a  b and results 5.
Operator  Description  Example 

Arithmetic operator Arithmetic operator are used to perform basic arithmetic operations.  
+  Adds two operand.  a + b gives 15 
*  Multiplies two operands.  a * b gives 50 
/  Divides two operands.  a / b gives 2 
%  Modulus operator divides the first operand from second and returns the remainder. It is generally used for checking divisibility.  a % b gives 0 (As 10/5 will have 0 remainder) 
Assignment operator Assignment operator is used to assign value to a variable. The value is assigned from right to left.  
=  Assigns value from right operand to left operand.  a = 10 will assign 10 in a 
Relational operatorRelational operator are used to check relation between any two operands. Whether any of them is greater, equal or not equal.  
>  If value of left operand is greater than right, returns true else returns false  (a > b) will return true 
<  If value of right operand is greater than left, returns true else returns false  (a < b) will return false 
==  If both operands are equal returns true else false  (a == b) will return false 
!=  If both operands are not equal returns true else false.  (a != b) will return true 
>=  If value of left operand is greater or equal to right operand, returns true else false  (a >= b) will return true 
<=  If value of right operand is greater or equal to left operand, returns true else false  (a <= b) will return false 
Logical operator Logical operator are used to combine two boolean expression together and results in a single boolean value according to the operand and operator used.  
&&  Used to combine two expressions. If both operands are true or NonZero, returns true else false  ((a>=1) && (a<=10)) will return true since (a>=1) is true and also (a<=10) is true. 
  If any of the operand is true or Nonzero, returns true else false  ((a>1)  (a<5)) will return true. As (a>1) is true. Since first operand is true hence there is no need to check for second operand. 
!  Logical NOT operator is a unary operator. Returns the complement of the boolean value.  !(a>1) will return false. Since (a>1) is true hence its complement is false. 
Bitwise operator Bitwise operator performs operations on Bits(Binary level). Lets suppose a = 10, b = 5 a = 0000 1010 (8bit binary representation of 10) b = 0000 0101 (8bit binary representation of 5)  
&  Bitwise AND performs anding operation on two binary bits value. If both the values are 1 then will result is 1 else will result in 0. 

  Bitwise OR returns 1 if any of the two binary bits are 1 else returns 0. 

^  Bitwise XOR returns 1 if both the binary bits are different else returns 0. 

~  Bitwise COMPLEMENT is a unary operator.It returns the complement of the binary value i.e. if the binary bit is 0 returns 1 else returns 0. 

<<  Bitwise LEFT SHIFT operator is also unary operator. It shift the binary bits to the left. It inserts a 0 bit value to the extreme right of the binary value. Or we may say it generally multiplies the value with 2. 

>>  Bitwise RIGHT SHIFT operator is an unary operator. It shifts the binary bits to the right. It inserts a 0 bit value to the extreme left of the binary value. Or we may say it generally divides the value with 2. 

Increment/Decrement operator Increment/Decrement operator is a unary operator used to increase an integer value by 1 or decrease it by 1. Increment/decrement operator are of two types Postfix and Prefix.  
++  Increment operator will add 1 to an integer value.  a++ will give 11 ++a will also give 11 
  Decrement operator will subtract 1 from an integer value.  a will give 9 a will also give 9 
Conditional/Ternary operator Ternary operator as a conditional operator and is similar to simple ifelse. It takes three operand.  
?:  It is used as conditional operator. Syntax of using ternary operator: (condition) ? (true part) : (false part)  b = (a>1) ? a : b; will store the value 10 in b as (a>1) is true hence true part will execute, assigning the value of a in b. 
What are Separators?
Separators are used to separate different programming elements. The various types of separators used in programming are:
(Space) \t(Tab) \n(New line) . , ; () {} []
What are Literals?
Literals are constant values that are used for performing various operations and calculations. There are basically three types of literals:
Integer literal
An integer literal represents integer or numeric values.
Example: 1, 100, 12312 etcFloating point literal
Floating point literal represents fractional values.
Example: 2.123, 1.02, 2.33, 13e54, 23.3 etcCharacter literal
Character literal represent character values. Single character are enclosed in a single quote(' ') while sequence of character are enclosed in double quotes(" ")
Example: 'a', 'n', "Hello", "Hello123" etc.
<pre><code> Your Source Code </code></pre>