# Write a Program to Detect Operators using Lexical Analyzer in JavaScript | Compiler Design

## What is Lexical Analyzer?

## What is Operators?

## Types of Operators in Programming Languages with Examples:

There are several types of operators commonly used in programming languages. They include:

**1) Arithmetic operators:** Used for mathematical operations such as addition (+), subtraction (-), multiplication (*), division (/), and modulo (%).

**2) Relational operators:** Used to compare values, such as greater than (>), lesser than (<), equal to (==), not equal to (!=), greater than or equal to (>=), and lesser than or equal to (<=).

**3) Logical operators:** Used for logical operations, such as logical AND (&&), logical OR (||), and logical NOT (!).

**4) Bitwise operators:** Used for bit-level operations on binary numbers, such as bitwise AND (&), bitwise OR (|), and bitwise XOR (^).

**5) Assignment operators: **Used to assign values, such as simple assignment (=), addition assignment (+=), subtraction assignment (-=), multiplication assignment (*=), and division assignment (/=).

**6) Type Information Operators:** Special operators that provide information about the type of a value, such as typeof and instanceof.

## Detecting Operators in JavaScript:

To detect operators in JavaScript, we can use a lexical analyzer. Here is an example implementation in JavaScript:

```
let operators = {
'+' :'addition',
'-' :'subtraction',
'*' :'multiplication',
'/' :'division',
'%' :'modulo',
'>' :'greater than',
'<' :'lesser than',
'=' :'assignment',
'++':'increment',
'--':'decrement',
'<=':'less or equal',
'>=':'greater or equal',
'==':'equal',
'!=':'not equal',
'&&':'logical AND',
'||':'logical OR',
'!':'logical NOT',
'^':'logical XOR',
'?:':'ternary operator',
'+=': 'assignment addition',
'-=': 'assignment subtraction',
'/=': 'assignment division',
'*=': 'assignment multiplication',
'**': 'exponential'
};
function detectOperator(expression, operators) {
console.log(`The given expression:\n${expression}\n`);
// Handle double operators
let double = ['!=','--','++','<=','>=','==','&&','||','+=','-=','/=','*=','**'];
for(let dup of double) {
if(expression.includes(dup)) {
expression = expression.replace(`${dup}`,'');
console.log(`${dup} is ${operators[dup]} operator`);
}
}
// Handle ternary operator
if(expression.includes('?' && ':')){
expression = expression.replace('?', '').replace(':', '');
console.log(`?: is a ternary operator`);
}
// Handle other operators
for(let operator in operators) {
let hasOperator = expression.includes(operator);
if(hasOperator) {
console.log(`${operator} is ${operators[operator]} operator`);
}
}
}
//takes input and runs only in browser console
let expression = prompt("Enter the expression:");
detectOperator(expression, operators);
```

## 0 Response to Write a Program to Detect Operators using Lexical Analyzer in JavaScript | Compiler Design

## Post a Comment