DESCRIBING SYNTAX AND SEMANTICS
Syntax, form/structure of expression, statements, and program units that computer can interpret (grammar of the language). So syntax error will happen if the user executes command without using proper syntax.
Example: <assign> -> <var> = <expr>
Semantic, is meaning of the expression, statements, and program units. Syntax and semantics provide language’s definition.
Grammar in programming languages is rules that determine the order of character(lexical token).
- Unambigous grammar
<assign> → <id> = <expr>
<id> → A | B | C | D
<expr> → <expr> + <term> | <term>
<factor> → (<expr>) | <id>
- Grammar for small language
<program> → begin<stmt_list>end
<stmt_list> → <stmt>
| <stmt>; <stmt_list>
<stmt> → <var> = <expr>
<var> → A|B|C|D
<expr> → <var> + < var>
| <var> – <var>
| <var>
- Grammar for simple assignment statement
<assign> → <id> = <expr>
<id> → A|B|C|D
<expr> → <id> + <expr>
| <id> * <expr>
| (<expr>)
| <id>
Example of using gammar: A = B + C
<assign> → <id> = <expr>
<assign> → A = <expr>
<assign> → A = <id> + <expr>
<assign> → A = <B> + <expr>
<assign> → A = <B> + <id>
<assign> → A = <B> + <C>
Parse tree, graph that connected and not circuler and have one root, from there it has route to every leaf.
Example: