Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl-atm:laboratoare:laborator3 [2013/11/01 13:06]
laura.vasilescu [Exemplu]
cpl-atm:laboratoare:laborator3 [2013/11/01 13:13] (current)
laura.vasilescu [Exemplu]
Line 36: Line 36:
 </​code>​ </​code>​
  
-Observăm că a apărut un nou fișier numit '''​sum.js'''​.+Observăm că a apărut un nou fișier numit ''​sum.js''​. 
 + 
 +Acest fișier trebuie modificat astfel: 
 +  * se șterge tot conținutul funcției ''​parseError''​ și se lasă doar ''​throw new Error(str);''​ 
 +  * la sfârșitul fișierului trebuie adăugată următoarea linie ''​exports.nume_fisier = nume_fisier'',​ unde ''​nume_fisier''​ reprezintă numele fișierului anterior, fără extensie; în cazul nostru, ​''​sum''​. 
 + 
 +Construim programul de bază. Vom realiza un parser, folosindu-ne de lexerul anterior. 
 +<code lex main.lex>​ 
 +var lexer = require("​./​sum.js"​).sum;​ 
 +lexer.setInput("​10+12+1"​);​ 
 + 
 + 
 +function my_sum () 
 +
 + var sum = 0; 
 + var i; 
 + 
 + for (i = 0; i < tokens.length;​ i++) 
 + if (tokens[i][0] == 'NUMBER'
 + sum = sum + tokens[i][1];​ 
 + 
 + console.log("​Sum = " + sum); 
 +
 + 
 + 
 +var token; 
 +var tokens = []; 
 +do 
 +
 + token = lexer.lex();​ 
 + if (token != 'SPACE' && token != lexer.EOF) 
 + tokens.push([token,​ parseInt(lexer.yytext)]);​ 
 +
 +while (token != lexer.EOF);​ 
 + 
 +my_sum(); 
 + 
 +</​code>​ 
 + 
 +== Exercițiu == 
 + 
 +Construiți un lexer pentru următoarea gramatică:​ 
 +<​code>​ 
 +xml: <ID parameters>​xml</​ID>​ 
 +parameters: parameter parameters |; 
 +parameter: ID = "​TEXT"​ 
 +TEXT: '​{'​ ALFANUMERIC '​}'​ 
 +</​code>​ 
 +Realizați în js un parser pentru aceasta. 
 + 
 +<​hidden>​ 
 +%% 
 + 
 +[a-zA-Z][a-zA-Z0-9]* ​     return '​ID';​ 
 +\{[a-zA-Z][a-zA-Z0-9]*\} ​    ​return '​TEXT';​ 
 +' '​+ ​   return '​SPACE';​ 
 +'<' ​  ​return '<';​ 
 +'/' ​  ​return '/';​ 
 +'>' ​  ​return '>';​ 
 +'​=' ​  ​return '​=';​ 
 +'"' ​  ​return '"';​ 
 + 
 +%% 
 + 
 +text pentru input 
 +<names ls="​{lalala}">​{fsdafsd}</​names>​ 
 +</​hidden>​
cpl-atm/laboratoare/laborator3.1383303981.txt.gz · Last modified: 2013/11/01 13:06 by laura.vasilescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0