4

我可以以某种方式更改 JavaScript 语言,使单词end等同于}符号并begin等同于{吗?

4

3 回答 3

6

不,你不能。您可以做的最好的事情是拥有一个脚本,该脚本用无效的脚本修改另一个脚本type并将其更改为有效type的,这样您就可以得到效果

<script type="text/x-algolscript">
    function hello() begin
        alert("Hello, world!");
    end
    hello();
</script>
<script type="text/javascript">
    Array.prototype.forEach.call(document.getElementsByTagName('script'), function(script) {
        if(script.type === 'text/x-algolscript') {
            var oldParent = script.parentNode;
            var oldNext = script.nextSibling;
            oldParent.removeChild(script);
            script.textContent = script.textContent.replace(/\bbegin\b/g, '{').replace(/\bend\b/g, '}');
            script.type = 'text/javascript';
            oldParent.insertBefore(script, oldNext);
        }
    });
</script>

但是,这是上下文不敏感的,并且很乐意更改您的字符串等。

奖励:缩小且更兼容浏览器的版本:

!function(s,i,t,e,l,p,o,n){for(l=s.length;i<l;i++)((e=s[i]).type==='text/x-algolscript')&&t.push(e);for(i=0;i<t.length;i++)o=(e=t[i]).parentNode,n=e.nextSibling,o.removeChild(e),p='textContent',e[p]||(p='innerText'),e[p]=e[p].replace(/\bbegin\b/,'{').replace(/\bend\b/,'}'),e.type='text/javascript',o.insertBefore(e,n)}(document.getElementsByTagName('script'),0,[]);
于 2013-04-01T00:12:52.327 回答
5

您可以编写自己的转编译器来解析我们的 Pascalesque Javascript 并输出传统的 Javascript。您可以将单词begin/替换为end括号,也可以使用更高级的东西,例如Jison

于 2013-04-01T00:15:39.547 回答
2

看看META II

...制作很多编译器——这一切都很容易。不需要 Ajax、Active X、DLL、SO、ASP、CGI、Java、插件、模块、XML、cookies、PHP、Perl、Python、magic shell 操作、全球标准 du jour 或星际统治计划 - 只需纯 JavaScript在帧中。此外,您还可以通过剪切和粘贴将您从这些网页构建的编译器移动到您选择的编程语言中。毕竟编译器只是一个读取文本并写入文本或二进制文件的程序。

就像一个想法。


或者,您可能希望在开始时使用以下(可疑)编码风格(以熟悉 ES 的语法):

function name(args){//begin
  // your code here
}//end

while(L--){//begin
  // your code here
}//end
于 2013-04-01T00:54:37.717 回答