1 个不稳定版本

0.1.0 2023年3月25日

#1997开发工具

49 次每月下载
pollen 中使用

MIT 许可证

6KB
126

花粉编程语言

一种具有XML语法的编程语言。脚本是由运行时提供的复杂指令序列。可以通过通用插件向运行时添加新元素标签。

对C语言使用静态检查以实现零缺陷程序。

HTML模板 是一个HTML模型。模板是预格式化的HTML,可以在其中插入文本或图像内容。大多数现代模板语言都包含某种形式的编程。Pollen也这样做,但它重用了XML语法,而不必创建全新的语法。因此,新程序员可以在学习如何使用Pollen语言编码的过程中,从一开始就熟悉这种语言。

XML 标签表示数据结构并包含元数据。

最初的想法是创建一个通用网关接口(CGI)可执行文件和Apache模块。类似于PHP。但是,Pollen不是解释脚本,而是加载编译后的动态库。它提供了一个简单的模板引擎,同时保持了编译语言的速度。

添加Apache运行时库(APR)以确保良好的安全性。APR提供动态数组和内存池,以减轻使用后释放、缓冲区溢出和缓冲区下溢的风险。更详细的解释可以在这里找到。

libpollen提供了一些独立于模板化运行时可执行文件的功能。插件使用libtemplatizer进行代码重用。

插件

在计算机科学中,一个插件(或插件、插件、插件、附加组件或附加组件)是一个软件组件,它为现有的计算机程序添加特定的功能。当程序支持插件时,它允许定制。

输入插件从客户端读取URL编码JSON输入。然后,这些值在脚本中使用'@'符号进行使用。可以使用'templatizer'标签选择输入插件。

动态链接器插件可以用来加载用特定编程语言编写的程序。该插件通过在“templatizer”元素上使用“lib”属性进行指定。模板可以使用“args”XML属性设置插件参数。

一个名为ld-exec.so的链接器可以用来在Linux上运行以shebang开头的二进制程序或文本脚本。

一些插件是完整的Web应用。使用变量名设置文本占位符变量,这些变量可以在XHTML模板占位符中使用。不同的网站可以在使用相同的Templatier应用插件的同时拥有不同的用户界面。

示例

以下是一个用Pollen编写的程序示例。它打印来自两个用不同语言编写的Pollen插件中的hello world。请注意,此示例以及其他Pollen程序的语法有意使它们与XML语法相似。

<!-- Copyright (C) 2023 Mateus de Lima Oliveira -->
<templatizer lib="../plugins/input/in_helloworld.so">
<templatizer lib="../plugins/input/helloworld-rs/target/release/libhelloworld_rs.so">
<templatizer lib="../plugins/net/headers.so">
<html>
  <head>
    <meta charset="UTF-8"/>
    <title>Hello world pipeline</title>
  </head>
  <body>
    <h1>Hello world pipeline</h1>
    <p>Hello world Templatizer pipeline in multiple programming languages:</p>
    <ul>
      <li>C: <span>@</span></li>
      <li>Rust: <span>@</span></li>
    </ul>
    <p>Have a nice day!</p>
    <templatizer lib="../plugins/net/copyright.so">
    <p>@</p>
    </templatizer>
  </body>
</html>
</templatizer>
</templatizer>
</templatizer>

更多测试和示例可以在源代码树的测试目录中找到。

从源代码编译

Pollen仅在Linux上进行了测试。

它需要

root@debian:~# make dependencies
mateus@debian:~$ make
mateus@debian:~$ make test
root@debian:~# make install

Termux

使用以下命令为termux编译Pollen

mateus@debian:~$ make termux
root@debian:~# make install

调试

启用调试可以通过将DEBUG环境变量设置为"y"来实现

mateus@debian:~$ DEBUG=y make

开发路线图

以下是我的未来开发

  • 将Quick转换为一系列守护进程
  • 从Quick中删除autotools
  • 将Quick与Pollen合并
  • 修复错误

贡献

如果您喜欢这个项目,请考虑捐赠以帮助我进一步开发它。:)

无运行时依赖