⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.177
Server IP:
50.6.168.112
Server:
Linux server-617809.webnetzimbabwe.com 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 9 04:57:09 EDT 2025 x86_64
Server Software:
Apache
PHP Version:
8.4.10
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
.cpan
/
build
/
Template-Toolkit-3.102-0
/
parser
/
View File Name :
README
#======================================================================== # Template Toolkit - parser #======================================================================== This directory contains the YAPP grammar for the Template processor. You only need to worry about the files in this directory if you want to modify the template parser grammar. If you're doing such a thing, then it is assumed that you have some idea of what you're doing. Files: Parser.yp Yapp grammar file for the Template parser. Grammar.pm.skel Skeleton file for ../lib/Template/Grammar.pm. yc Simple shell cript to compile grammar and build new ../lib/Template/Grammer.pm file from Grammar.pm.skel and the output rules and states generated from the grammar. Parser.output Output file generated by the yapp parser. This is for information and debugging purposes only and can otherwise be ignored. README This file If you don't know what you're doing and would like to, then I can recommend "Lex and Yacc" by John R. Levine, Tony Mason & Doug Brown (O'Reilly, ISBN: 1-56592-000-7) which gives a good introduction to the principles of an LALR parser and how to define grammars in YACC. YAPP is identical to YACC in all the important ways. See also the Parse::Yapp documentation and the comments in Template::Parser for more info. For an in-depth study of parser and compiler theory, consult "Compiler Theory and Practice", a.k.a. "The Dragon Book", by Alfred V. Aho, Ravi Sethi and Jeffrey D.Ullman (Addison-Wesley, ISBN: 0-201-10194-7) The parser grammar is compiled by 'yapp', the front-end script to Francois Desarmenien's Parse::Yapp module(s). You will need Parse::Yapp version 0.32 or later, available from CPAN, to compile the grammar. The grammar file that yapp produces (../Template/Grammar.pm) contains the rule and state tables for the grammar. These are then loaded by Template::Parser and used to run the DFA which is implemented by the parse_directive() method. This has been derived from the standalone parser created by Parse::Yapp. Having modified the Parser.yp file to add your language changes, simply run: ./yc to compile the grammar and install it in ../lib/Template/Grammar.pm. You can then make, make test, make install, or whatever you normally do, and the new grammar should be used by the template processor. To revert to the original grammar, simply copy the original distribution Parser.yp file back into this directory and repeat the above process. To create a separate grammar, copy and modify the Parser.yp and Grammar.pm.skel files as you wish and then run yapp to compile them: yapp -v -s -o ../lib/Template/MyGrammar.pm \ -t MyGrammar.pm.skel MyParser.yp You can then instantiate you own grammar and pass this to the Template constructor. my $template = Template->new({ GRAMMAR => Template::MyGrammar->new(), }); Changing the grammar is a simple process, in theory at least, if you're familiar with YAPP/YACC. In practice, it also requires some insight into the inner working of the template toolkit which should probably be better documented somewhere. Andy Wardley