my reactjs
npm install marwan.akhandafvar : 'var'
let : 'let'
const : 'const'
function : 'function'
return : 'return'
import : 'import'
from : 'from'
as : 'as'
statement
: block
| variableStatement
| functionDeclaration
| returnStatement
| importStatement
;
block
: '{' statementList? '}'
;
statementList
: statement+
;
variableStatement
: varModifier '=' variablepossible
;
varModifier
: var
| let
| const
;
variablepossible
: literal
;
string
: [A-Za-z0-9]+
;
onlyAlpha
: [A-Za-z]+
;
integer
:[0-9]+
;
boolean
:'true'
|'false'
;
htmlTagName
: 'h1'
: 'p'
: 'strong'
;
functionDeclaration
: function onlyAlpha '(' parameterList? ')' '{' functionBody '}'
;
parameterList
: parameterArg (',' parameterArg)*
;
parameterArg
: varModifier string ('=' variablepossible)?
;
functionBody
:statementList?
;
returnStatement
: return '(' htmlElements ')'
| return variablepossible
;
htmlElements
: htmlElement+
;
htmlElement
: '<' htmlTagName '>' htmlContent '<''/' htmlTagName '>'
| '<' htmlTagName '/''>'
| '<' htmlTagName '>'
;
htmlContent
: (string | htmlElement)+
;
importStatement
: import importFromBlock
;
importFromBlock
: (importNamespace | moduleItems) importFrom
;
importNamespace
: ('*' | onlyAlpha) (as onlyAlpha)?
;
moduleItems
: '{' (onlyAlpha ',')* (onlyAlpha ','?)? '}'
;
importFrom
: from '\"'string'\"'
;
nog doen
stringLiteral
: '\'' string '\''
| '"' string '"'
;
numberLiteral
: integer
| float
;
booleanLiteral
: 'true'
| 'false'
;
pair
: stringLiteral ':' literal
;